हाय मैं Toast
मुझे उपलब्ध नहीं करना चाहता हूं, जब भी मैं अपने आवेदन में पसंद करता हूं, किसी भी थ्रेड से क्या और उपलब्ध नहीं है। तो यह करने के लिए मैं Activity
वर्ग बढ़ाया:एंड्रॉइड - वर्कर थ्रेड से यूई थ्रेड को कॉल करना
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;
public class MyActivity extends Activity{
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
mHandler = new Handler();
super.onCreate(savedInstanceState);
}
private class ToastRunnable implements Runnable {
String mText;
public ToastRunnable(String text) {
mText = text;
}
public void run(){
Toast.makeText(getApplicationContext(), mText, Toast.LENGTH_SHORT).show();
}
}
public void doToast(String msg) {
mHandler.post(new ToastRunnable(msg));
}
}
ताकि सभीActivity
मेरे एप्लिकेशन में कक्षाएं अब कर रहे हैं बस
public class AppMain extends MyActivity {
//blah
}
क्या मैं (करने के लिए सक्षम होने के लिए एक कार्यकर्ता सूत्र में उम्मीद
try{
MyActivity me = (MyActivity) Looper.getMainLooper().getThread();
me.doToast("Hello World");
}
catch (Exception ex){
Log.e("oh dear", ex.getMessage());
}
और इतने लंबे समय के रूप में Activity
एक "MyActivity
" यह काम करना चाहिए था:) यह था - लेकिन समस्या यह है --->Looper.getMainLooper().getThread();
MyActivity
मेरे पास वापस नहीं लौटा रहा है और यह मुझे रो रहा है - मैं क्या गलत कर रहा हूं?
: संपादित करें:
कुछ पृष्ठभूमि समझाने के लिए "क्यों" मैं implmentation के इस प्रकार के साथ फंस कर रहा हूँ।
मुझे उपयोगकर्ता को यह पुष्टि करने में सक्षम होना चाहिए कि "HTTP पोस्ट" ईवेंट सफल रहा है। अभी व। यदि यूआई यूआई फॉर्म पर "ओके" पर क्लिक करता है तो यह उस समय इंटरनेट नहीं हो सकता है या नहीं .. अगर इसमें इंटरनेट है - सब ठीक है और अच्छा है - यह HTTP POST के माध्यम से फॉर्म को अच्छी तरह से और अच्छी के माध्यम से पोस्ट करता है .. लेकिन अगर वहाँ कोई इंटरनेट सबसे अधिक (99.999 एंड्रॉयड का% एप्लिकेशन लंगड़ा/दयनीय/इस पर mewling, और मूल रूप से उपयोगकर्ता की पेशकश नहीं योजना "बी" यह सोचते हैं कि हर समय इंटरनेट नहीं है - जब यह नहीं है)
मेरा ऐप "लंगड़ा (जैसा कि मैं इसे कॉल करता हूं)" नहीं होगा - इसमें योजना "बी" है, इसके बजाय यह पोस्ट इवेंट "क्यूईज़" करती है और प्रत्येक एक्स मिनट को पुनः प्रयास करती है .. अब यह एक मूक धागा है पृष्ठभूमि .. मेरे पास पूरे ऐप पर बहुत सारे उपयोगकर्ता इंटरैक्शन हैं, मुझे नहीं पता कि उपयोगकर्ता कहां है "होगा" लेकिन आखिरकार जब HTTP पोस्ट कतार/retries/queue/retries देता है "! सफलता! "मुझे लगता है कि उपयोगकर्ता के लिए संदेश के रूप में Toast
करना चाहते हैं (जैसे:" अपने प्रपत्र भेजा गया था ")
नहीं, मैं 'उपयोगकर्ता,' runOnUiThread' एक 'Runnable Action' स्वीकार करता है जो' Toast' – conners
साथ काम नहीं करता कोई 'activity' है पर पोस्ट करने के Toast' संदेशों चाहते कोई' संदर्भ है, क्योंकि ' – conners
' getAplicationContext() 'का उपयोग क्यों न करें? – Rawkode