2011-03-22 13 views
6

मैंने टोस्ट को रद्द करने पर कई प्रश्न देखे हैं। उनमें से कोई भी काम नहीं कर रहा है।कस्टम टोस्ट काम नहीं कर रहा

मेरे पास एक कस्टम टोस्ट है। इसके लिए कोड http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView

जैसा एक अंतर है, इस प्रकार का अंतर निम्नानुसार है।

  1. टोस्ट चर एक वर्ग चर
  2. पूरे जावा कोड एक विधि में लिखा है के रूप में परिभाषित किया गया है।
  3. इस विधि की शुरुआत में, मैंने टोस्ट को रद्द करने के लिए निम्न पंक्ति जोड़ दी है।

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

विधि जब उपयोगकर्ता चयन (onClick) देखें/लेआउट कहा जाता है। मुद्दा यह है कि जब उपयोगकर्ता कुछ बार चुनता है, तो टोस्ट कतारबद्ध हो जाएगा (टोस्ट.cancel काम नहीं कर रहा है)।

कोई समाधान?

[अद्यतन] मैंने टोस्ट ऑब्जेक्ट को स्थिर चर बनाने की कोशिश की। अभी भी काम नहीं करते हैं।

+0

आपको लगता है कि toast.cancel जाँच था वास्तव में बुलाया जा रहा है? यदि आप कभी टोस्ट नहीं देते हैं, तो टोस्ट शून्य और टोस्ट.cancel() कभी नहीं कहा जाएगा। –

+0

@ माइक-डीजी हां। मैंने डीबगर में चेक किया और कोड वहां पहुंच रहा है। हालांकि, टोस्ट.cancel() टोस्ट के लिए कोई प्रभाव नहीं है। [अद्यतन] लॉग संदेश के साथ फिर से जांच की।हां यह निश्चित रूप से अगर कथन के भीतर पहुंच रहा है। – GSree

+0

संभावित डुप्लिकेट [एंड्रॉइड को ऐप से बाहर निकलने पर टोस्ट रद्द करें और जब टोस्ट दिखाया जा रहा है] (http://stackoverflow.com/questions/16098151/android-cancel-toast-when-exiting-the-app-and-when- टोस्ट-दिखाया जा रहा है) –

उत्तर

2

रद्द नहीं कर सकते अंत में, मैं एक कस्टम संवाद बनाया ताकि उपयोगकर्ता है कुछ और करने से अवरुद्ध (और कई टोस्ट पॉप अप से बचाता है)। जब उपयोगकर्ता क्लिक करता है तो संवाद बंद करने के लिए एक ऑनक्लिक श्रोता ईवेंट जोड़ा गया।

दुख है कि Toast.cancel() काम नहीं करता है।

+0

'टोस्ट.cancel()' बिल्कुल काम करता है - जांच [नमूना गिथब गिस्ट के साथ संबंधित उत्तर] (http://stackoverflow.com/questions/16098151/android-cancel-toast-when-exiting-the-app-and-when -स्टास्ट-दिखाया जा रहा है) –

0
उपरोक्त कोड में

toast.setDuration(Toast.LENGTH_LONG); कि में यू toast.setDuration(Toast.LENGTH_SHORT); का उपयोग या एसई विशेष time.Toast है रद्द automatically.we यह

+1

खैर ... Toast.LENGTH_SHORT इसे कम समय देगा। लेकिन वह समस्या की मदद नहीं कर रहा है। मैं इसे बहुत छोटा नहीं बनाना चाहता हूं कि उपयोगकर्ता संदेश देखने में सक्षम न हो। टोस्ट के लिए प्रलेखन में, एक रद्द() विधि है। यकीन नहीं है कि यह क्यों काम नहीं कर रहा है। – GSree

7

मुझे एक ही मुद्दे (कस्टम टोस्ट क्यूइंग अप) से पीड़ित था और एक समाधान मिला। यह मेरे मामले में ठीक काम किया।

कस्टम टोस्ट ऑब्जेक्ट initially set to null होने के बाद।

  • यदि यह शून्य है, तो नया कस्टम टोस्ट ऑब्जेक्ट "नया" बनाएं।

  • जहां तक ​​आप एक ही गतिविधि में हैं, नई वस्तु बनाने के लिए "नया" न करें। इसके बजाय, उस वस्तु का प्रयोग करें। चूंकि setText() इस मामले में काम नहीं करेगा, तो आप अपने कस्टम टोस्ट के साथ setView() का उपयोग करें।

  • इस तरह से show(), cancel(), show(), cancel() ठीक उसी तरह काम करता है जैसा मैं उम्मीद करता हूं। कोई देरी नहीं, कोई कतार नहीं।

उम्मीद है कि इससे मदद मिलती है।

+1

इसके सही समाधान। धन्यवाद। – JohnRaja

+0

@ जॉनराज, यह मेरी खुशी है। – Tomcat

-1

कस्टम पाठ के लिए इस कोड का उपयोग करें:

LayoutInflater mInflater=LayoutInflater.from(context); 
View view=mInflater.inflate(R.layout.tost_layout,null); 
Toast toast=new Toast(this); 
toast.setView(view); 
toast.show(); 
संबंधित मुद्दे