2011-03-22 24 views
6

Tostu iptal etme ile ilgili bir dizi soru gördüm. Hiçbiri çalışmıyor.Özel Tost İşe yaramadı

Özel bir Tostum var. Bunun için kod, ancak hepsi bir satır http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView

Aşağıdaki gibidir.

  1. tost değişken tüm Java kodu bir yöntemde yazılır
  2. değişken bir sınıf olarak tanımlanır.
  3. Bu yöntemin başlangıcında, tostu iptal etmek için aşağıdaki satırı ekledim.

    if (toast!=null){ 
        toast.cancel(); 
    } 
    

yöntem kullanıcı seçer (onClick) görünüm/düzeni olarak adlandırılır. Sorun, kullanıcı birkaç kez seçtiğinde, tost kuyruğa girer (toast.cancel çalışmıyor).

Herhangi bir çözüm?

[update] Tost nesnesini statik bir değişken oluşturmaya çalıştım. Hala çalışmıyor. Kullanıcı böylece yukarıdaki kodda

+0

o toast.cancel kontrol ettin aslında çağrıldığını? Hiçbir zaman tost alamazsanız, tost null olacaktır ve toast.cancel() asla çağrılmayacaktır. –

+0

@ Mike-dg Evet. Hata ayıklayıcısını kontrol ettim ve kod oraya ulaşıyor. Ancak, toast.cancel() 'nin tost için bir etkisi yoktur. [update] Log mesajıyla tekrar kontrol edildi.Evet, if ifadesinin içine kesinlikle ulaşıyor. (Arasında – GSree

+0

olası çift [uygulamasını terk ederken ve tost gösterilen Android'te tost iptal] http://stackoverflow.com/questions/16098151/android-cancel-toast-when-exiting-the-app-and-when- tost-ol-being-being-being) –

cevap

2

iptal edemez edilir se, bana Özel Dialog yarattı başka bir şey yapmaktan engellenir (ve birden fazla tostun patlamasını önler). Kullanıcı aynı tıkladığında iletişim kutusunu kapatmak için bir onClick Listener Etkinliği eklendi.

Bu Toast.cancel() çalışmasında üzücü değil.

+0

'Toast.cancel()' kesinlikle çalışır - [örnek Github özünden ile ilgili cevabı] (http://stackoverflow.com/questions/16098151/android-cancel-toast-when-exiting-the-app-and-when kontrol -toast-ol-varlık) –

0

ki toast.setDuration(Toast.LENGTH_LONG); u toast.setDuration(Toast.LENGTH_SHORT); kullanabilir veya belirli time.Toast iptal automatically.we Sonunda o

+1

İyi ... Toast.LENGTH_SHORT daha kısa sürede yapacak. Ama bu probleme yardımcı olmuyor. Kullanıcının mesajı göremeyeceği kadar küçük yapmak istemiyorum. Tost belgelerinde, bir iptal etme() bir yöntem yoktur. Bunun neden çalışmadığından emin değil. – GSree

7

Aynı sorundan (özel tost kuyruğu) sıkıntı çektim ve bir çözüm buldum. Benim durumumda iyi çalıştı.

Özel tost nesnesine sahip olma initially set to null.

  • Bu boşsa, "yeni" ile yeni özel tost nesnesi oluşturun.

  • Aynı etkinliğe sahip olduğunuz sürece, yeni nesne oluşturmak için "yeni" yapma. Bunun yerine, bu nesneyi kullanın. Bu durumda setText() çalışmayacağından, özel tost ile yaptığınız gibi setView() kullanın.

  • Bu şekilde show(), cancel(), show(), cancel() beklediğim gibi çalıştı. Gecikme yok, kuyruk yok.

Bu yardımcı olur umarım.

+1

onun doğru çözümler. Teşekkürler. – JohnRaja

+0

@JohnRaja, Benim için zevkti. – Tomcat

-1

Kullanım özel metin için bu kodu:

LayoutInflater mInflater=LayoutInflater.from(context); 
View view=mInflater.inflate(R.layout.tost_layout,null); 
Toast toast=new Toast(this); 
toast.setView(view); 
toast.show(); 
İlgili konular