2011-09-06 12 views
9

मैं टोस्ट दिखाता हूं, यह ऐप बंद होने के बाद भी गायब नहीं होता है। मैं कैसे ठीक करूं?एंड्रॉइड टोस्ट गायब नहीं होगा

@Override 
public void onClipStoreLoadedClipsNotification(ClipStoreLoadedClipsNotification notif) 
{ 
    final ClipStoreLoadedClipsNotification notification = notif; 

    runOnUiThread(new Runnable() { 
     @Override 
     public void run() 
     { 
      Dialogs.DismissAll(); 
      list.onRefreshComplete(); 
      TextView text = (TextView)findViewById(R.id.loadclipstext); 
      ProgressBar pb = (ProgressBar)findViewById(R.id.loadclipsprogress); 

      if (notification.moreClipsAvailable) 
      { 
       text.setText(context.getString(R.string.loading_clips)); 
       pb.setVisibility(View.VISIBLE); 
      } 
      else 
      { 
       text.setText(context.getString(R.string.no_clips)); 
       pb.setVisibility(View.INVISIBLE); 
       int duration = Toast.LENGTH_SHORT; 
       Toast.makeText(SugarLoafContext.playbackTabContext, "No clips found.", duration).show(); 
      } 

      SugarLoafContext.currentCamera = notification.camera; 
      clipList = notification.clips; 

      refreshListView(); 
      readyToLoadMoreClips = true; 
      if (!firstClipsLoaded) 
       firstClipsLoaded = true; 
     } 
    }); 


} 
+0

इस int अवधि = टोस्ट.LENGTH_SHORT की तरह निर्धारित अवधि; –

उत्तर

7

केवल व्याख्या यह है कि आपके Toast एक पाश में कहा जाता है। आपको toast .show() ट्रैक करना चाहिए और देखें कि इसे अनंत काल नहीं कहा जाता है या नहीं।

एक अन्य दृश्य तरीका यह

Toast.makeText(SugarLoafContext.playbackTabContext, "No clips found.", duration).show(); 
Toast.makeText(SugarLoafContext.playbackTabContext, "Do you understand now?", duration).show(); 

मुझे यकीन है कि आप एक looong समय के दौरान दोनों टोस्ट वैकल्पिक रूप से देखेंगे हूँ ...

44

यह एक IntentService अंदर चल रहा है क्या करना होगा ???

यदि ऐसा है, तो समस्या यह है कि एंड्रॉइड में इरादा सेवाएं मुख्य की तुलना में एक अलग थ्रेड में चलती हैं, इसलिए टोस्ट को समाप्त होने के बाद मुख्य पृष्ठ की तुलना में एक अलग धागे में दिखाया जाता है, एंड्रॉइड सिस्टम टोस्ट कहां नहीं ढूंढ पा रहा है, इसलिए यह इसे हटा नहीं सकता है।

मैं एक ही समस्या थी, और अब, मैं सभी को एक IntentService अंदर Toast को दिखाने के लिए नहीं है, बजाय एक गतिविधि को खोलने के लिए, एक commom सेवा चलाने का प्रयास या, या कुछ अलग करने की कोशिश करता है, तो यह दिखाने के लिए पूरी तरह से आवश्यक है की सलाह देते हैं टोस्ट।

तथ्य यह है कि जब आप ऐप बंद करते हैं तो टोस्ट गायब नहीं होता है यह है कि IntentService अभी भी चल रहा है, और आपको सिस्टम को रीबूट करना होगा या ऐपेंट सेवा के लिए ऐप को अनइंस्टॉल करना होगा।

+0

यह मेरे लिए काफी समस्या नहीं थी, मैं पृष्ठभूमि पर चल रहा कुछ देखने के लिए बहुत उत्साहित था :-) – Nabin

+0

मेरे लिए भी कुछ समस्या का सामना करना पड़ रहा है, वही मैं भी IntentService का उपयोग कर रहा हूं। क्या इसका कोई समाधान है? – sandeepmaaram

+0

एक गतिविधि लॉन्च करें, और गतिविधि को टोस्ट लॉन्च करने वाला एक होने दें। मुझे पता है कि यह कठिन है, लेकिन हमें समझना होगा कि इरादा सेवा यूआई थ्रेड पर काम नहीं करती है, इसलिए हमें एक गतिविधि लॉन्च करना है (NEW_TASK ध्वज के साथ, और गतिविधि को टोस्ट लॉन्च करने दें)। यदि आप चाहते हैं, तो आप गतिविधि को अदृश्य के रूप में लॉन्च कर सकते हैं ताकि उपयोगकर्ता अजीब कुछ न देख सके। अन्यथा आप स्नैकबार तत्व पर भी जांच सकते हैं: https://developer.android.com/reference/android/support/design/widget/Snackbar.html – zapotec

0

यह भी हो सकता है यदि आपके डिवाइस के पास कोई नेटवर्क कनेक्शन नहीं है, और आपका ऐप लाइसेंस जांच करता है और परिणामों का टोस्ट दिखाता है। मेरे ऐप्स में से एक में यह समस्या थी, क्योंकि ऐप की जांच करते समय मैं टोस्ट प्रदर्शित कर रहा था। नेटवर्क कनेक्शन के बिना टोस्ट ने उपयोगकर्ता को बताया कि एक लाइसेंस पुनः प्रयास किया जाना था, और जब मैंने टोस्ट को जोड़ा तो हटा दिया गया, क्योंकि लाइसेंस जांच काम कर सकती थी।

संबंधित मुद्दे