2011-08-25 10 views
7

नहीं कहा गया है, मुझे कार्यकर्ता थ्रेड में Runtime Exception:Can't create handler inside thread that has not called Looper.prepare() while displaying the Toast message मिल रहा है।टोस्ट संदेश को प्रेषित करते समय त्रुटि: थ्रेड के अंदर हैंडलर नहीं बना सकता है जिसे Looper.prepare()

मेरे पास एक सेवा है (एक दूरस्थ प्रक्रिया में चलता है) जो एक वस्तु बनाता है। यह ऑब्जेक्ट किसी थ्रेड में सर्वर से कनेक्ट करने के लिए ज़िम्मेदार है। मुझे अलग से प्रतिक्रिया मिलती है। मैं टोस्ट में सर्वर से संदेश प्रदर्शित करना चाहता हूं। उस समय मुझे यह अपवाद मिल रहा है। मैंने हैंडलरपोस्ट का उपयोग कर इसे हैंडलर में पोस्ट करने का प्रयास किया। लेकिन फिर भी मुझे अपवाद मिल रहा है।

इससे बचने के लिए दृष्टिकोण क्या होना चाहिए।

+0

[यह देखो] (http://www.google.com/search?client=ubuntu&channel=fs&q=that+has+not+called+Looper.prepare%28%29&ie=utf-8&oe= utf-8) –

+0

अपना सर्विस कोड –

उत्तर

15

इस तरह एक हैंडलर निर्धारित करें:

private final Handler handler = new Handler() { 
     public void handleMessage(Message msg) { 
       if(msg.arg1 == 1) 
        Toast.makeText(getApplicationContext(),"Your message", Toast.LENGTH_LONG).show(); 
     } 
    } 

तो निम्न कोड जहां आप अपने टोस्ट संदेश दिखाने की जरूरत है डाल दिया।

Message msg = handler.obtainMessage(); 
msg.arg1 = 1; 
handler.sendMessage(msg); 
+1

धन्यवाद जेनल इस समाधान ने काम किया :-) मैंने पहले इस समाधान की कोशिश की थी लेकिन मैं थ्रेड में हैंडलर बना रहा था। अब मैंने जिस स्थिति को काम किया है उसे बदल दिया :-) –

+0

इस लाइब्रेरी को 'compile' com.shamanland: xdroid-toaster: 0.0.5'' की जांच करें, इसे 'runOnUiThread() 'या' संदर्भ 'चर की आवश्यकता नहीं है, सभी दिनचर्या है गया हुआ! बस 'Toaster.toast (R.string.my_msg) का आह्वान करें;' यहां उदाहरण है: https://github.com/shamanland/xdroid-toaster-example –