android एंड्रॉइड 'विंडो जोड़ने में असमर्थ-टोकन नल एप्लिकेशन के लिए नहीं है' अपवाद




android-dialog runtimeexception (7)

इसका उपयोग करें और संदर्भ मेरे लिए काम नहीं किया..लेकिन MyActivityName.this काम किया। उम्मीद है कि यह किसी को भी इसकी मदद करने में मदद करता है।

जब मैं एक संवाद खोलने का प्रयास करता हूं तो मुझे निम्न एंड्रॉइड अपवाद मिलता है। क्या कोई मुझे समझने में मदद कर सकता है कि क्या हो रहा है और मैं इस समस्या को कैसे ठीक कर सकता हूं?

android.view.WindowManager$BadTokenException: 
  Unable to add window -- token null is not for an application
    at android.view.ViewRoot.setView(ViewRoot.java:509)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    at android.app.Dialog.show(Dialog.java:241)

मैं अनुमान लगा रहा हूं - क्या आप एक अनुप्रयोग संदर्भ के साथ संवाद बनाने की कोशिश कर रहे हैं? कुछ इस तरह:

new Dialog(getApplicationContext());

ये गलत है। आपको एक गतिविधि संदर्भ का उपयोग करने की आवश्यकता है।

आपको ऐसा करने की ज़रूरत है:

new Dialog(YourActivity.this);

मेरे मामले में मैं इस तरह अपना संवाद बनाने की कोशिश कर रहा था:

new Dialog(getApplicationContext());

तो मुझे इसके लिए बदलना पड़ा:

new Dialog(this);

और यह मेरे लिए ठीक काम करता है;)


new AlertDialog.Builder(getParent()); जैसे context के तर्क स्थान पर getParent() को आज़माएं new AlertDialog.Builder(getParent()); उम्मीद है कि यह काम करेगा, यह मेरे लिए काम किया।


मैंने संदर्भ क्षेत्र में इसके साथ प्रयास किया:

this.getActivity().getParent()

और यह मेरे लिए ठीक काम करता है। यह एक वर्ग से था जो "टुकड़ा" से फैला हुआ है:

public class filtro extends Fragment{...

मुझे यह अपवाद मिला, जब मैंने दो मामलों का उपयोग करके कॉर्डोवा प्लगइन के तहत प्रगति संवाद खोलने की कोशिश की,

  1. नया प्रोग्रेसडियलॉग (this.cordova.getActivity ()। getParent ());

  2. नया प्रोग्रेसडियलॉग (this.cordova.getActivity ()। getAplicationContext ());

बाद में इस तरह बदल गया,

नई प्रगति डायलॉग (this.cordova.getActivity ());

यह मेरे लिए ठीक काम कर रहा है।


मैं अनुमान लगा रहा हूं - क्या आप डायलॉग का उपयोग कर बनाने की कोशिश कर रहे हैं।

 getApplicationContext()
 mContext which is passed by activity.

यदि आप संवाद गैर गतिविधि वर्ग प्रदर्शित करते हैं तो आपको गतिविधि को पैरामीटर के रूप में पास करना होगा।

Activity activity=YourActivity.this;

अब यह बहुत अच्छा काम करेगा।

अगर आपको कोई परेशानी मिलती है तो मुझे बताएं।





android-windowmanager