วิธีการแสดง Toast ใน Android


446

ฉันมีตัวเลื่อนที่สามารถดึงขึ้นมาแล้วแสดงแผนที่ ฉันสามารถเลื่อนตัวเลื่อนขึ้นและลงเพื่อซ่อนหรือแสดงแผนที่ เมื่อแผนที่อยู่ข้างหน้าฉันสามารถจัดการเหตุการณ์การสัมผัสบนแผนที่นั้นได้ ทุกครั้งที่ฉันสัมผัส a AsyncTaskจะถูกไฟขึ้นมันจะดาวน์โหลดข้อมูลบางส่วนและสร้างToastข้อมูลนั้น แม้ว่าฉันจะเริ่มงานในกิจกรรมการสัมผัสแล้วไม่มีขนมปังแสดงให้เห็นจนกระทั่งฉันปิดตัวเลื่อน เมื่อตัวเลื่อนปิดและแผนที่จะไม่ปรากฏอีกต่อไปToastปรากฏขึ้น

ความคิดใด ๆ

เริ่มงานกันดีกว่า

แก้ไข:

public boolean onTouchEvent(MotionEvent event, MapView mapView){ 
    if (event.getAction() == 1) {
        new TestTask(this).execute();
        return true;            
    }else{
        return false;
    }
 }

และonPostExecuteทำขนมปัง

Toast.makeText(app.getBaseContext(),(String)data.result, 
                Toast.LENGTH_SHORT).show();

ในใหม่TestTask(this)นี่คือการอ้างอิงถึงMapOverlayและไม่ได้MapActivityดังนั้นนี่คือปัญหา


1
โพสต์นี้ได้รับคำตอบนานแล้ว แต่ฉันคิดว่าความคิดเห็นของฉันอาจยังช่วยใครซักคน มีห้องสมุดที่มีรูปแบบที่เกี่ยวข้องกับการToastตรวจสอบ: stackoverflow.com/a/18280318/1891118
Oleksii K.

2
เกือบทั้งหมดเกี่ยวกับ Toast ... แบบฝึกหัดง่ายๆ .... คลิกที่นี่
Thomas Daniel

คำตอบ:


849

ในการแสดงToastในแอปพลิเคชันของคุณให้ลองสิ่งนี้:

Toast.makeText(getActivity(), (String)data.result, 
   Toast.LENGTH_LONG).show();

ตัวอย่างอื่น:

Toast.makeText(getActivity(), "This is my Toast message!",
   Toast.LENGTH_LONG).show();

เราสามารถกำหนดค่าคงที่สองช่วงเวลา:

int LENGTH_LONGแสดงการแจ้งเตือนมุมมองหรือข้อความเป็นเวลานาน

int LENGTH_SHORT แสดงการแจ้งเตือนมุมมองหรือข้อความเป็นระยะเวลาสั้น ๆ

ปรับแต่งขนมปังของคุณ

LayoutInflater myInflater = LayoutInflater.from(this);
View view = myInflater.inflate(R.layout.your_custom_layout, null);
Toast mytoast = new Toast(this);
mytoast.setView(view);
mytoast.setDuration(Toast.LENGTH_LONG);
mytoast.show();

3
@Elen คุณต้องมีบริบทของกิจกรรมในการสร้าง TOASTS ไม่ใช่บริบทของแอปพลิเคชัน
Yousha Aleayoub

1
ที่จริงแล้วการกำหนดบริบทของกิจกรรมนั้นไม่ถูกต้อง อย่างไรก็ตามการรับขนมปังปิ้งให้ทำงานนอกกิจกรรม (ตัวอย่างเช่นในบริการของระบบ) ต้องมีการเข้าถึงลูปหลัก โพสต์โซลูชันของฉัน
ChrisCM

7
หากคุณใส่ไว้ในวิธีการ onClick การแทนที่ getActivity () ด้วย getBaseContext () ได้ผลสำหรับฉัน
Edward

@ PhilipBelgrave-Herbert น่าเสียดายที่ลิงก์ของคุณไม่ดีอีกต่อไป
Ellen Spertus

4
Toast.makeText (MainActivity.this ข้อความ Toast.LENGTH_LONG) .show ();
Shahab Einabadi

83

การขยายกิจกรรมโดยbaseadapterใช้สิ่งนี้

Toast.makeText(getActivity(), 
    "Your Message", Toast.LENGTH_LONG).show();

หรือถ้าคุณใช้กิจกรรมหรือ mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();

1
ไม่มีสิ่งดังกล่าวเช่นอะแดปเตอร์ฐานหรือกิจกรรมหลักขนมปังแสดงเฉพาะโดยผ่านแอพพลิเคบริบทพารามิเตอร์ข้อความระยะเวลายาว / สั้น
Mahesh

47

วากยสัมพันธ์

Toast.makeText(context, text, duration);

ค่าพารามิเตอร์

บริบท

getApplicationContext() - ส่งคืนบริบทสำหรับกิจกรรมทั้งหมดที่ทำงานอยู่ในแอปพลิเคชัน

getBaseContext() - หากคุณต้องการเข้าถึงบริบทจากบริบทอื่นภายในแอปพลิเคชันคุณสามารถเข้าถึงได้

getContext() - ส่งคืนมุมมองบริบทเฉพาะกิจกรรมที่ดำเนินอยู่ในปัจจุบัน

ข้อความ

text - ส่งคืน "STRING" หากไม่ใช่สตริงคุณสามารถใช้ประเภทนักแสดง

 (string)num   // type caste

ระยะเวลา

Toast.LENGTH_SHORT - Toast หน่วงเวลา 2000 ms ที่กำหนดไว้ล่วงหน้า

Toast.LENGTH_LONG - ขนมปังปิ้งล่าช้า 3500 ms ที่กำหนดไว้ล่วงหน้า

milisecond - ขนมปังปิ้งล่าช้าผู้ใช้กำหนด miliseconds (เช่น 4000)


Example.1

Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();

Example.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();

ผู้ใช้กำหนดความล่าช้าในการปิ้งขนมปัง 5000 มิลลิวินาที
Jay Patel

อธิบายได้ดี แต่คุณต้องมีบริบทของกิจกรรมในการสร้าง TOASTS ไม่ใช่บริบทของแอปพลิเคชัน
Yousha Aleayoub

เอ่อ, นักแสดงเช่น (string) num ยังไม่ได้รับการแนะนำให้รู้จักกับจาวา ลองใช้ Integer.toString () หรือคล้ายกัน
Mostowski ยุบ

2
ระยะเวลาการตั้งค่าเป็นไปไม่ได้สำหรับขนมปังเพียงครั้งที่กำหนดไว้ล่วงหน้า LENGTH_SHORT & LENGTH_LONG
Jorgesys

23

ขนมปังปิ้งใน Android

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();

หรือ

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();

(LENGTH_SHORT และ LENGTH_LONG ทำหน้าที่เป็นธงบูลีน - ซึ่งหมายความว่าคุณไม่สามารถส่งตัวจับเวลาขนมปังเป็นมิลลิวินาที แต่คุณต้องใช้ตัวเลือกอย่างใดอย่างหนึ่ง)


6
อ่านเอกสารคุณจะเลือกเฉพาะ Toast.LENGTH_SHORT หรือ Toast.LENGTH_LONG สำหรับข้อความ
Jorgesys

20

คุณสามารถปรับแต่ง tost ของคุณ:

LayoutInflater mInflater=LayoutInflater.from(this);

View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();

หรือวิธีทั่วไป:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();

1
ขวา - นี่คือตัวอย่างบางส่วนจากโครงการจริง ๆ ใน GitHub - codota.com/android/methods/android.widget.Toast/show
drorw

15

ฉันได้ลองขนมปังหลายครั้งและสำหรับผู้ที่ขนมปังปิ้งของพวกเขากำลังลองผิดลองถูก

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();

14

มีสองวิธีที่จะทำ

ใช้ข้อความ Toast ของ inbuilt

//Toast shown for  short period of time 
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_SHORT).show();

//Toast shown for long period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_LONG).show();

หรือสร้างไฟล์ที่กำหนดเองโดยจัดเตรียมไฟล์เลย์เอาต์ที่กำหนดเอง

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();

1
อธิบายได้ดี แต่คุณต้องมีบริบทของกิจกรรมในการสร้าง TOASTS ไม่ใช่บริบทของแอปพลิเคชัน
Yousha Aleayoub

เอกสาร Android กล่าวถึงบริบทของแอปพลิเคชันโดยเฉพาะ: "วิธีนี้ใช้พารามิเตอร์สามตัว: บริบทของแอปพลิเคชันข้อความตัวอักษรและระยะเวลาสำหรับขนมปังปิ้ง
lgunsch

9

ฉันวิ่งข้ามคำตอบที่นี่และได้รับความสนใจจากความจริงที่ว่าดูเหมือนว่ามีใครบางคนแหย่ไปรอบ ๆ เชื่อว่าจำเป็นต้องมีบริบทของกิจกรรม กรณีนี้ไม่ได้. อย่างไรก็ตามเป็นข้อกำหนดที่ Toast จะโพสต์จากเหตุการณ์หลักหรือ UI Thread ดังนั้นการทำให้สิ่งนี้ทำงานนอกบริบทของกิจกรรมนั้นค่อนข้างยุ่งยาก Contextนี่คือตัวอย่างที่จะทำงานภายในของระบบการให้บริการหรือระดับที่อาจเกิดขึ้นในท้ายที่สุดว่าสืบทอดมาจาก

public class MyService extends AccessibilityService {

    public void postToastMessage(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());

        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
}

โปรดทราบว่าเราไม่จำเป็นต้องเข้าถึงอินสแตนซ์ที่Activityใช้งานได้ โปรดหยุดการแนะนำในกรณีนี้! หากถูกต้องลายเซ็นวิธีการที่จะไม่เรียกร้องให้ActivityContext


8
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

แทนที่จะใช้ "app.getBaseContext ()"

คุณสามารถลองใช้ " getApplicationContext () " หรือ " getContext () "

หากรหัสของคุณอยู่ในกิจกรรมคุณควรใช้ "this" ของ "Activty.this"
หากรหัสของคุณอยู่ในชิ้นส่วนคุณควรไปที่ "getActivity ()"



6

สำหรับการแสดง Toast ให้ใช้รหัสต่อไปนี้:

Toast toast = new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setDuration(Toast.LENGTH_LONG);

toast.show();

5
 Toast toast=Toast.makeText(getApplicationContext(),"Hello", Toast.LENGTH_SHORT);
 toast.setGravity(Gravity.CENTER, 0, 0); // last two args are X and Y are used for setting position
 toast.setDuration(10000);//you can even use milliseconds to display toast
 toast.show();**//showing the toast is important**

5

วิธีง่ายๆ

toast("Your Message")

หรือ

toast(R.string.some_message)

BaseActivityเพียงแค่เพิ่มสองวิธีในของคุณ หรือสร้างใหม่BaseActivityหากคุณยังไม่ได้ใช้

public class BaseActivity extends AppCompatActivity {
    public void toast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    public void toast(@StringRes int msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }
}

BaseActivityและขยายกิจกรรมของคุณทั้งหมดด้วย

public class MainActivity extends BaseActivity

3

วิธีที่ง่ายที่สุด! (หากต้องการแสดงในกิจกรรมหลักของคุณให้แทนที่อาร์กิวเมนต์แรกสำหรับกิจกรรมอื่น ๆ )

Button.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
    }
}

2

สิ่งนี้ใช้ได้กับฉัน:

Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();

2

ป้อนคำอธิบายรูปภาพที่นี่

ต้องอ่าน: ตัวอย่างขนมปังปิ้ง Android

วากยสัมพันธ์

Toast.makeText(context, text, duration);

คุณสามารถใช้getApplicationContext ()หรือgetActivity ()หรือMainActivity.this (ถ้าชื่อกิจกรรมคือ MainActivity)

Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();

หรือ

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();


1

แสดงขนมปังปิ้งจากบริการ

public class ServiceA extends Service {
    //....
    public void showToast(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
    //....
}

นอกจากนี้คุณยังสามารถใส่showToastวิธีในคลาสแอปพลิเคชันของคุณและแสดงขนมปังจากที่ใดก็ได้


1

หากคุณต้องการเขียนขนมปังง่ายๆในกิจกรรมของคุณ: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. แสดง TextView ใน Toast: ---

TextView tv = new TextView(this); tv.setText("Hello!"); tv.setTextSize(30); tv.setTextColor(Color.RED); tv.setBackgroundColor(Color.YELLOW);

2. การแสดงภาพเป็นขนมปัง: -

ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.blonde); Toast t = new Toast(this); t.setView(iv); t.setDuration(Toast.LENGTH_LONG); t.show();

3. การแสดงเค้าโครงเป็นขนมปัง: -

LayoutInflater li = getLayoutInflater(); View view = li.inflate(R.layout.my_toast_layout,null,false); Toast t = new Toast(this); t.setView(view); t.setDuration(Toast.LENGTH_LONG); t.show();

** หากคุณต้องการเขียนขนมปังใน Async ของคุณ: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();


1

นี่คืออีกหนึ่ง:

refreshBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
            }
        });

อยู่ที่ไหนToast:

Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();

& strings.xml:

<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>


1

แฟรกเมนต์ภายใน (บนสร้างมุมมอง)

Toast.makeText(getActivity(), "your message" , Toast.LENGTH_LONG).show();

ภายในคลาส (onCreate)

Toast.makeText(myClassName.this, "your message" , Toast.LENGTH_LONG).show();

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.