Android'de Tost nasıl görüntülenir?


446

Ben yukarı çekilebilir bir kaydırıcı var ve sonra bir harita gösterir. Haritayı gizlemek veya göstermek için kaydırıcıyı yukarı ve aşağı hareket ettirebilirim. Harita öndeyken, o haritadaki dokunma olaylarını işleyebilirim. Her dokunduğumda, a AsyncTasktetiklenir, bazı verileri indirir ve verileri Toastgörüntüleyen bir yapar . Touch olayında göreve başlasam da kaydırıcı kapatılıncaya kadar tost görüntülenmiyor. Kaydırıcı kapatıldığında ve harita artık Toastgörüntülenmediğinde görünür.

Herhangi bir fikir?

Görevi başlat

DÜZENLE:

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

ve onPostExecutebir tost yapmak

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

Yeni olarak TestTask(this), bu bir referanstır MapOverlayve değil MapActivity, bu yüzden sorun buydu.


1
Bu gönderi uzun zaman önce cevaplandı, ancak bence yorumum yine de birine yardımcı olabilir. ile ilgili iyi biçimlendirilmiş kütüphane var Toast, kontrol edin: stackoverflow.com/a/18280318/1891118
Oleksii K.

2
Tost hakkında neredeyse her şey ... basit öğretici .... tıklayınız
Thomas Daniel

Yanıtlar:


849

Toast'ı uygulamanızda görüntülemek için şunu deneyin:

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

Başka bir örnek:

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

Süre için iki sabit tanımlayabiliriz:

int LENGTH_LONG Görünümü veya metin bildirimini uzun süre göster.

int LENGTH_SHORT Kısa bir süre için görünümü veya metin bildirimini göster.

Tostunuzu özelleştirme

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, Uygulama bağlamı yerine TOASTS yapmak için Etkinlik bağlamına ihtiyacınız vardır.
Yousha Aleayoub

1
Aslında, bir Etkinlik bağlamı istemek doğru değildir. Ancak, etkinliklerin dışında çalışmak için tost almak (örneğin bir sistem Hizmetinde) ana döngüye erişim gerektirir. Çözümümü gönderiyorum.
ChrisCM

7
Bunu bir onClick yönteminin içine yerleştiriyorsanız, getActivity () yerine getBaseContext () yerine benim için çalıştı.
Edward

@ PhilipBelgrave-Herbert Maalesef bağlantınız artık iyi değil.
Ellen Spertus

4
Toast.makeText (MainActivity.this, ileti, Toast.LENGTH_LONG) .show ();
Shahab Einabadi

83

baseadapterBunu kullanarak etkinliği genişletme

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

veya etkinlik kullanıyorsanız veya mainactivity

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

1
baz bağdaştırıcısı veya ana etkinlik, tost sadece parametre uygulama bağlamı, mesaj, süre uzun / kısa geçerek görüntü gibi bir şey yoktur
Mahesh

47

Sözdizimi

Toast.makeText(context, text, duration);

Parametre değeri

bağlam

getApplicationContext() - Uygulamada çalışan tüm etkinlikler için bağlamı döndürür.

getBaseContext() - Bağlam'a uygulama içindeki başka bir bağlamdan erişmek istiyorsanız erişebilirsiniz.

getContext() - Bağlam görünümünü yalnızca geçerli çalışan etkinliği döndürür.

Metin

text - Dönüş "STRING", Dize değilse cast türünü kullanabilirsiniz.

 (string)num   // type caste

süre

Toast.LENGTH_SHORT - Tost gecikmesi 2000 ms önceden tanımlandı

Toast.LENGTH_LONG - Tost gecikmesi 3500 ms önceden tanımlandı

milisecond - Tost gecikmesi kullanıcı tanımlı milisaniye (ör. 4000)


Örnek 1

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

Example.2

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

Kullanıcı tanımlı 5000 milisaniyede kızarmış ekmek gecikmesi.
Jay Patel

İyi açıklama, ancak TOASTS yapmak için Etkinlik bağlamına ihtiyacınız var, Uygulama bağlamı değil.
Yousha Aleayoub

Peki, (string) num gibi bir kadro henüz Java'ya tanıtılmadı. Integer.toString () veya benzerini deneyin.
Mostowski çöküşü

2
bir tost için sürenin ayarlanması mümkün değildir, sadece önceden tanımlı zamanlar olan LENGTH_SHORT & LENGTH_LONG .
Jorgesys

23

Android'de tost yapmak

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

veya

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

(LENGTH_SHORT ve LENGTH_LONG, boole bayrakları gibi davranıyor - bu, tost zamanlayıcısını milisaniyeye gönderemediğiniz anlamına geliyor, ancak bu 2 seçenekten birini kullanmanız gerekiyor)


6
Belgeleri okuyun, yalnızca ileti süresi boyunca Toast.LENGTH_SHORT veya Toast.LENGTH_LONG seçeneklerinden birini seçersiniz.
Jorgesys

20

Tostunuzu özelleştirebilirsiniz:

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

Veya Genel yol:

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

1
Doğru - İşte GitHub'daki gerçek projelerden bazı örnekler - codota.com/android/methods/android.widget.Toast/show
drorw

15

Birkaç tost denedim ve onların tost onlara hata vermek için deneyin

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

14

Bunu yapmanın iki yolu var.

Dahili Toast mesajını kullanın

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

veya özel düzen dosyası sağlayarak özel bir dosya oluşturun

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

1
İyi açıklama, ancak TOASTS yapmak için Etkinlik bağlamına ihtiyacınız var, Uygulama bağlamı değil.
Yousha Aleayoub

Android dokümanları özellikle uygulama bağlamından bahseder: "Bu yöntem üç parametre alır: uygulama Bağlamı, kısa mesaj ve tost süresi. Düzgün olarak başlatılmış bir Toast nesnesi döndürür."
lgunsch

9

Buradaki cevaplara rastladım ve bir Etkinlik bağlamının gerekli olduğuna inanarak etrafta dolaşan biri olduğu gerçeğinden etkilendim. Olay bu değil. Ancak, ana olaydan veya UI İş Parçacığından bir Tost gönderilmesi gerekir. Bu nedenle, bunu bir etkinlik bağlamının dışında çalışmak biraz zor. Aşağıda, bir sistem hizmetinin veya nihayetinde devralınan herhangi bir potansiyel sınıfın içinde çalışacak bir örnek yer almaktadır 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();
            }
        });
    }
}

ActivityBunun çalışması için bir örneğine erişmemiz gerekmediğini unutmayın . Lütfen durumun böyle olduğunu söylemeyi bırakın! Gerekirse Activity, yöntem imzası bir Context.


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

"app.getBaseContext ()" yerine.

" GetApplicationContext () " veya " getContext () yöntemini kullanmayı deneyebilirsiniz ".

Kodunuz etkinse, "Activty.this" ifadesinin "this" ifadesini kullanmalısınız.
Kodunuz parçalıysa "getActivity ()" için gitmelisiniz


7

Eğer bir parçasıysa,

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

6

Tost'u görüntülemek için aşağıdaki kodu kullanın:

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

Basit yol

toast("Your Message")

VEYA

toast(R.string.some_message)

Sadece iki yöntem ekleyin BaseActivity. Veya BaseActivityhenüz kullanmıyorsanız yeni bir tane oluşturun .

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

ve bütün faaliyetleri genişletmek BaseActivity.

public class MainActivity extends BaseActivity

3

En basit yol! (Ana Etkinliğinizde Görüntülemek için, diğer etkinlikler için İlk Argümanı değiştirin)

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

2

Bu benim için çalıştı:

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

2

resim açıklamasını buraya girin

Okunmalı: Android Tost Örneği

Sözdizimi

Toast.makeText(context, text, duration);

Sen kullanabilirsiniz getApplicationContext () veya getActivity () veya MainActivity.this (Etkinlik Adı MainActivity ise)

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

veya

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

2

Başlangıç ​​Yolu

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

1

Hizmetten Tost Göster

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

Ayrıca showToastyöntemi Uygulama sınıfınıza koyabilir ve her yerden tost gösterebilirsiniz.


1

Etkinliğinize basit bir tost yazmak istiyorsanız: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. Tost'da TextView Gösterimi: ---

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

2. Tost Olarak Görüntü Gösterme: -

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. Tost olarak Düzeni Gösterme: -

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

** Tostu Async'inize yazmak istiyorsanız: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();


1

İşte burada bir başkası:

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

Nerede 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

İç Parçalar (onCreateView)

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

Sınıflar İçinde (onCreate)

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.