मैं एक "टोस्ट" का उपयोग कर रहा हूं जिसका उपयोग मैं "myToast.cancel(); नया टोस्ट जारी करने से पहले करता हूं। एंड्रॉइड v2.3 और पुराने के लिए, यह बहुत अच्छा काम करता है। नए टोस्ट को भेजने की जरूरत है, पुराना एक, यदि अभी भी स्क्रीन पर है, तो नए टोस्ट के साथ प्रतिस्थापित करने के लिए रद्द कर दिया गया है (और तुरंत गायब हो जाता है)। यदि उपयोगकर्ता कई बार एक कुंजी दबाता है तो यह टोस्टों का एक गुच्छा ढेर से बचाता है चेतावनी (और अन्य स्थितियां)। मेरा वास्तविक मामला एक टोस्ट तब होता है जब गलत कुंजी दबाई जाती है, और दूसरा दिखाई देता है यदि साफ़ कुंजी दबाया नहीं जाता है।एकाधिक टोस्ट ओवरलैप को कैसे रोकें
एंड्रॉइड 4.0 और 4.1 के लिए, myToast.cancel() जारी करना अगले टोस्ट से पहले वर्तमान और अगले टोस्ट दोनों को मारता है। वर्तमान रद्द() एपीआई इंगित करता है कि यह वर्तमान और अगले टोस्ट को रद्द करता है (जो बेवकूफ लगता है)। एक टोस्ट को क्यों रद्द करना चाहते हैं?
एंड्रॉइड संस्करणों (और जिस तरह से यह v2.3 और पुराने में काम करता है) में निरंतर काम रद्द करने पर कोई विचार?
मैं कुछ सुरुचिपूर्ण दोहरी टोस्ट सिस्टम का प्रयास करूँगा जिसमें टॉस्ट का उपयोग किया जा रहा है, लेकिन ऐसा लगता है कि पुराने एंड्रॉइड संस्करणों में पूरी तरह से और तार्किक रूप से काम करने के लिए 4.x में इस बुरे व्यवहार के आसपास ऐसा दर्द होता है।
ठीक है, मैंने इसे हल किया है, लेकिन यह लगभग उतना ही साफ नहीं है जितना मुझे पसंद आएगा। मैंने दोहरी टोस्ट दृष्टिकोण लागू किया, जहां यह दो टोस्टों के बीच बदलता है। OnCreate में
Toast toast0;
Toast toast1;
private static boolean lastToast0 = true;
: अंत में
toast0 = new Toast(getApplicationContext());
toast0.cancel();
toast1 = new Toast(getApplicationContext());
toast1.cancel();
और, जब मैं टोस्ट प्रदर्शित करने और एक ही समय में पहले टोस्ट रद्द करने की आवश्यकता पहले हम टोस्ट गतिविधि के लिए पहले OnCreate को परिभाषित
if (lastToast0) {
toast0.cancel();
toast1.setDuration(Toast.LENGTH_LONG);
toast1.setText("new message");
toast1.show();
lastToast0 = false;
} else {
toast1.cancel();
toast0.setDuration(Toast.LENGTH_LONG);
toast0.setText("new message");
toast0.show();
lastToast0 = true;
}
तुम सिर्फ (यह समय समाप्त होने से पहले) एक मौजूदा टोस्ट को रद्द करने की जरूरत है का उपयोग करें::
मैं करने के लिए कुछ इसी तरह का उपयोग 0toast0.cancel();
toast1.cancel();
नेक्सस 7 (4.1), एम्यूलेटर 4.0, और एंड्रॉइड 2.2, 2.3 के साथ कई उपकरणों पर परीक्षण किया गया।
आप पुराने टोस्ट को कैसे रद्द कर रहे हैं? नया बनाने से पहले या बाद में? – TheZ
क्या आप अपना कोड पोस्ट कर सकते हैं जहां आप टोस्ट कर रहे हैं? – Ralgha
मैं इसे नए से पहले रद्द कर रहा था - यही कारण है कि यह इतना अजीब बात है कि एंड्रॉइड 4.x नया छुपाता है (लेकिन टोस्ट के लिए एपीआई बताएगा कि समझा जाएगा)। मैंने एक समाधान में संपादित किया जो मैंने बनाया है। बस बहुत अच्छी लग रही नहीं है। – Frank