Bagaimana cara menampilkan Toast di Android?

446

Saya memiliki slider yang dapat ditarik ke atas dan kemudian menampilkan peta. Saya dapat memindahkan slider ke atas dan ke bawah untuk menyembunyikan atau menampilkan peta. Ketika peta ada di depan, saya bisa menangani acara sentuh di peta itu. Setiap kali saya menyentuh, a AsyncTaskdinyalakan, ia mengunduh beberapa data dan membuat Toastyang menampilkan data. Meskipun saya memulai tugas pada acara sentuh, tidak ada roti panggang yang ditampilkan, tidak sampai saya menutup slider. Ketika slider ditutup dan peta tidak ditampilkan lagi Toastmuncul.

Ada ide?

Baik memulai tugas

EDIT:

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

dan onPostExecutebersulang

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

Di baru TestTask(this), ini adalah referensi ke MapOverlaydan bukan ke MapActivity, jadi ini masalahnya.

Suara positif
sumber
1
posting ini sudah dijawab lama, tapi saya pikir komentar saya mungkin masih membantu seseorang. ada perpustakaan yang terkait dengan Toast, periksa: stackoverflow.com/a/18280318/1891118
Oleksii K.
2
Hampir semua tentang Toast ... tutorial sederhana .... klik di sini
Thomas Daniel

Jawaban:

849

Untuk menampilkan Toast di aplikasi Anda, coba ini:

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

Contoh lain:

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

Kita dapat mendefinisikan dua konstanta untuk durasi:

int LENGTH_LONG Tampilkan tampilan atau pemberitahuan teks untuk jangka waktu yang lama.

int LENGTH_SHORT Tampilkan tampilan atau pemberitahuan teks untuk waktu singkat.

Menyesuaikan roti panggang Anda

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();
Jorgesys
sumber
3
@Elen, Anda memerlukan konteks Aktivitas untuk membuat TOASTS, bukan konteks Aplikasi.
Yousha Aleayoub
1
Sebenarnya, memerlukan konteks Aktivitas tidak benar. NAMUN, mendapatkan roti panggang untuk bekerja di luar kegiatan (misalnya dalam Layanan sistem) memerlukan akses ke loop utama. Posting solusi saya.
ChrisCM
7
Jika Anda memasukkannya ke dalam metode onClick, mengganti getActivity () dengan getBaseContext () bekerja untuk saya.
Edward
@ PhilipBelgrave-Herbert Sayangnya tautan Anda tidak lagi bagus.
Ellen Spertus
4
Toast.makeText (MainActivity.this, message, Toast.LENGTH_LONG) .show ();
Shahab Einabadi
83

Memperluas aktivitas menggunakan yang baseadapterdigunakan ini

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

atau jika Anda menggunakan aktivitas atau mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
Cristiana Chavez
sumber
1
tidak ada yang namanya adaptor dasar atau aktivitas utama, roti panggang hanya ditampilkan dengan meneruskan konteks aplikasi parameter, pesan, durasi-panjang / pendek
Mahesh
47

Sintaksis

Toast.makeText(context, text, duration);

Nilai parameter

konteks

getApplicationContext() - Mengembalikan konteks untuk semua aktivitas yang berjalan dalam aplikasi.

getBaseContext() - Jika Anda ingin mengakses Konteks dari konteks lain dalam aplikasi yang dapat Anda akses.

getContext() - Mengembalikan tampilan konteks hanya aktivitas berjalan saat ini.

teks

text - Kembalikan "STRING", Jika bukan string, Anda dapat menggunakan tipe cast.

 (string)num   // type caste

durasi

Toast.LENGTH_SHORT - Toast delay 2000 ms sudah ditentukan sebelumnya

Toast.LENGTH_LONG - Toast delay 3500 ms sudah ditentukan sebelumnya

milisecond - Toast menunda milidetik yang ditentukan pengguna (mis. 4000)


Contoh 1

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

Contoh.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Jay Patel
sumber
Ditentukan pengguna penundaan roti panggang 5000 milidetik.
Jay Patel
Bagus menjelaskan, tetapi Anda memerlukan konteks Aktivitas untuk membuat SITUS, bukan konteks Aplikasi.
Yousha Aleayoub
Well, well, para pemain seperti (string) num belum diperkenalkan ke Jawa. Coba Integer.toString () atau yang serupa.
Mostowski Tutup
2
durasi pengaturan tidak dimungkinkan untuk bersulang, hanya waktu yang telah ditentukan, LENGTH_SHORT & LENGTH_LONG .
Jorgesys
23

Bersulang di Android

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

atau

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

(LENGTH_SHORT dan LENGTH_LONG bertindak sebagai boolean flags - yang berarti Anda tidak dapat mengirim penghitung waktu panggang ke milidetik, tetapi Anda harus menggunakan salah satu dari 2 opsi itu)

Dinesh
sumber
6
Baca dokumentasi, Anda hanya akan memilih Toast.LENGTH_SHORT atau Toast.LENGTH_LONG untuk durasi pesan.
Jorgesys
20

Anda dapat menyesuaikan tost Anda:

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();

Atau Cara umum:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
Mahesh
sumber
1
Kanan - berikut adalah beberapa contoh dari proyek nyata di GitHub - codota.com/android/methods/android.widget.Toast/show
drorw
15

Saya telah mencoba beberapa roti panggang dan bagi mereka yang roti panggang mereka memberi mereka mencoba kesalahan

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

sumber
14

Ada dua cara untuk melakukannya.

Baik menggunakan pesan 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();

atau buat yang khusus dengan menyediakan file tata letak khusus

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
Aniket Thakur
sumber
1
Bagus menjelaskan, tetapi Anda memerlukan konteks Aktivitas untuk membuat SITUS, bukan konteks Aplikasi.
Yousha Aleayoub
Android docs secara khusus menyebutkan konteks aplikasi: "Metode ini membutuhkan tiga parameter: Konteks aplikasi, pesan teks, dan durasi untuk roti panggang. Ia mengembalikan objek Toast yang diinisialisasi dengan benar."
lgunsch
9

Saya menemukan jawaban di sini, dan tertarik oleh fakta bahwa tampaknya ada seseorang yang berkeliaran, percaya bahwa konteks Kegiatan diperlukan. Ini bukan kasusnya. Namun, itu adalah persyaratan bahwa Toast diposting dari acara utama atau Utas UI. Jadi, menjadikan ini berfungsi di luar konteks aktivitas agak rumit. Berikut adalah contoh yang akan bekerja di dalam layanan sistem, atau kelas potensial yang akhirnya mewarisi dari 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();
            }
        });
    }
}

Perhatikan bahwa kita tidak perlu akses ke instance Activityagar ini berfungsi. Tolong berhenti menyarankan ini masalahnya! Jika Activitydiperlukan, tanda tangan metode tidak akan memanggil untuk Context.

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

alih-alih menggunakan "app.getBaseContext ()".

Anda dapat mencoba menggunakan " getApplicationContext () " atau " getContext () ".

Jika kode Anda dalam aktivitas, maka Anda harus menggunakan "this" of "Activty.this".
Jika kode Anda terpisah, Anda harus mencari "getActivity ()"

Yogesh Nandha
sumber
7

Jika itu fragmen,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();
hash
sumber
6

Untuk menampilkan Toast gunakan kode berikut:

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
Anurag
sumber
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**
Gowtham Chandrasekaran
sumber
5

Cara Sederhana

toast("Your Message")

ATAU

toast(R.string.some_message)

Cukup tambahkan dua metode di blog Anda BaseActivity. Atau buat baru BaseActivityjika Anda belum menggunakan.

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();
    }
}

dan memperpanjang semua aktivitas Anda dengan BaseActivity.

public class MainActivity extends BaseActivity
Khemraj
sumber
3

Cara paling sederhana! (Untuk Ditampilkan di Aktivitas Utama Anda, ganti Argumen Pertama untuk aktivitas lain)

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

Ini bekerja untuk saya:

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

sumber
2

masukkan deskripsi gambar di sini

Harus membaca: Contoh Android Toast

Sintaksis

Toast.makeText(context, text, duration);

Anda dapat menggunakan getApplicationContext () atau getActivity () atau MainActivity.this (jika Nama Aktivitas adalah MainActivity)

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

atau

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();
Athira Reddy
sumber
2

Cara Memulai

Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
Dary
sumber
1

Tampilkan Roti Panggang dari Layanan

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();
            }
        });
    }
    //....
}

Anda juga dapat memasukkan showToastmetode di kelas Aplikasi Anda, dan menunjukkan roti panggang dari mana saja.

Khemraj
sumber
1

Jika Anda ingin menulis roti panggang sederhana dalam aktivitas Anda: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1.Menampilkan TextView di Toast: ---

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

2.Menunjukkan Gambar sebagai Roti Panggang: -

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. menunjukkan Tata Letak sebagai Roti Panggang: -

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();

** Jika Anda ingin menulis roti panggang di Async Anda maka: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

Deepya
sumber
1

Ini satu lagi:

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

Dimana 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>

Jadeye
sumber
1

Inside Fragments (onCreateView)

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

Kelas Dalam (onCreate)

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

MonFern
sumber