2012-04-10 13 views
5

में चयन बॉक्स पर क्लिक करने पर ऐप क्रैश मैं अपने आवेदन में एक वेबव्यू का उपयोग कर रहा हूं। वेबव्यू अनुप्रयोग संदर्भ का उपयोग कर बनाया गया है। एप्लिकेशन को किसी भी सलेक्ट बॉक्सवेबव्यू

04-10 14:19:14.502: E/AndroidRuntime(12628): Uncaught handler: thread main exiting due to uncaught exception 
04-10 14:19:14.542: E/AndroidRuntime(12628): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.view.ViewRoot.setView(ViewRoot.java:476) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.app.Dialog.show(Dialog.java:239) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.webkit.WebView$InvokeListBox.run(WebView.java:9509) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.os.Handler.handleCallback(Handler.java:609) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.os.Looper.loop(Looper.java:123) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.app.ActivityThread.main(ActivityThread.java:4595) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at java.lang.reflect.Method.invokeNative(Native Method) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at java.lang.reflect.Method.invoke(Method.java:521) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
04-10 14:19:14.542: E/AndroidRuntime(12628): at dalvik.system.NativeStart.main(Native Method) 

क्लिक करने पर दुर्घटनाओं मुझे अच्छी तरह पता है कि इस सवाल का पहले से ही कई बार कहा गया है, लेकिन मैं अभी तक किसी भी काम के समाधान खोजने के लिए कर रहा हूँ। यदि मैं गतिविधि संदर्भ का उपयोग करता हूं तो यह समस्या हल हो जाएगी लेकिन मुझे कुछ अन्य चिंताओं के कारण एप्लिकेशन संदर्भ का उपयोग करना होगा। अन्य अलर्ट और संवादों के लिए मैंने वेबच्रोमक्लिएंट पर जेएसएलर्ट() पर ओवरराइड करके उन्हें संभाला है, लेकिन मैं यह नहीं ढूंढ पा रहा हूं कि मैं इसे अपने वेबव्यू में कैसे रोक सकता हूं और अपना खुद का चयनकर्ता संवाद बना सकता हूं।

किसी भी प्रकार के सुझाव/सहायता की बहुत सराहना की जाती है।

मेरी वेबव्यू कार्यान्वयन की एक डमी नमूना

class MyWebView extends WebView 
{ 

MyWebView(Context context) 
{ 

    super(context.getApplicationContext()); 
    setWebChromeClient(myWebChromeClient); 
    setWebViewClient(myWebViewClient); 
} 
} 
+0

क्या आपने विस्तार किया है यह गतिविधि या वेब दृश्य है? – Bhavin

+0

इसका वेब्यूम। इसे एक अलग गतिविधि से बुलाया जा रहा है। मैं रनटाइम पर वेबव्यू बना रहा हूं (मैं इसके लिए किसी भी लेआउट का उपयोग नहीं कर रहा हूं) यदि आप ऐसी स्थिति से अवगत हैं, तो आवेदन संदर्भ – androgeek

+0

का उपयोग कर, यदि आप कोशिश कर रहे हैं, तो आपको गतिविधि के बजाय गतिविधि संदर्भ का उपयोग करना होगा यूआई संदर्भ के बिना कुछ यूआई सामान करने के लिए जो गतिविधि का होना चाहिए। –

उत्तर

0

मैं तुम्हें इस तरह के मामले में extends Activity का उपयोग करना चाहते हैं जोड़ा जा रहा है।

बस here से एक संदर्भ लें।

और यदि आप इसके अलावा वेब व्यू का उपयोग करना चाहते हैं, तो उसके लिए कोड के बाद मुझे writtend है।

mWebView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onReceivedError(WebView view, int errorCode, 
       String description, String failingUrl) { 
      // Handle the error 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    }); 
+0

आपके समर्थन के लिए धन्यवाद, लेकिन समस्या यह है कि मैं एक पुस्तकालय के लिए अपना वेबदृश्य बना रहा हूं जिसका उपयोग विभिन्न अनुप्रयोग गतिविधि द्वारा किया जा सकता है, इसलिए यह दृष्टिकोण है जिसे मुझे किसी भी मामले में पालन करना है – androgeek

3

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

super(context); 

तुम भी आप गतिविधि जहां से आपने उसे बनाया में वेब दृश्य का उपयोग सुनिश्चित करने की आवश्यकता (द्वारा इसका उपयोग में कोई मतलब नहीं है: इस पंक्ति के साथ

super(context.getApplicationContext()); 

: लाइन बदलें एक अलग गतिविधि पर)। यदि आपको किसी भिन्न गतिविधि में वेब दृश्य की आवश्यकता है, तो केवल निर्दिष्ट गतिविधि के संदर्भ का उपयोग करके एक बनाएं।