2012-02-09 6 views
5

similar question को एक साल पहले पूछा गया था, और काफी हल नहीं किया गया था, लेकिन मैं किसी भी तरह से मेरी किस्मत आजमा रहा हूं, शायद कोई इसे जानता है।एंड्रॉइड वेबव्यू में SELECT टैग खोलने का प्रयास कर रहा है एप्लिकेशन

मेरे पास यह एप्लिकेशन है जो वेबव्यू में कुछ HTML पृष्ठ चलाता है। सबकुछ अच्छा दिखता है और ठीक काम करता है, जब तक आप एक SELECT टैग खोलने का प्रयास नहीं करते - बूम, एप्लिकेशन क्रैश। यहाँ, एक ट्रेस ढेर है अगर यह मदद करता है:

थ्रेड [< 1> मुख्य] ​​(निलंबित (अपवाद WindowManager $ BadTokenException)) AlertDialog (संवाद) .show() लाइन: 247
WebView $ InvokeListBox। रन() पंक्ति: 7841
WebView $ PrivateHandler (हैंडलर) .handleCallback (संदेश) लाइन: 587
WebView $ PrivateHandler (हैंडलर) .dispatchMessage (संदेश) लाइन: 92
Looper.loop() लाइन: 130 ActivityThread । मेन (स्ट्रिंग []) लाइन: 3859
मेट hod.invokeNative (ऑब्जेक्ट, ऑब्जेक्ट [], कक्षा, कक्षा [], कक्षा, int, बूलियन) लाइन: उपलब्ध नहीं [मूल विधि]
Method.invoke (ऑब्जेक्ट, ऑब्जेक्ट ...) पंक्ति: 507
ज़ीगोटइनिट $ MethodAndArgsCaller.run() लाइन: 840
ZygoteInit.main (String []) लाइन: 598 NativeStart.main (String []) पंक्ति: उपलब्ध नहीं [देशी विधि]

(क्या AlertDialog संबंध है एक चयन बॉक्स खोलने के साथ करो मेरे बाहर है। और नहीं, उस चयन से जुड़े कोई स्क्रिप्ट नहीं है जो अलर्ट खोलती है)।

अब, यहां सबसे अच्छा हिस्सा है। मैं 2 डिवाइस पर ऐप का परीक्षण कर रहा हूं, ओएस 2.3.3 के साथ सैमसंग गैलेक्सी एस 2 और ओएस 2.3.5 के साथ मोटोरोला आरएजेडआर एक्सटी 9 10। सैमसंग पर सब कुछ अद्भुत काम करता है। हालांकि, आरएजेआरआर पर उपर्युक्त होता है।

पृष्ठ सीएसएस और जावास्क्रिप्ट के साथ बहुत भारी हैं, लेकिन यह सब कुछ हटा दिए जाने पर भी क्रैश हो रहा है। वास्तव में, एक एकल एचटीएमएल नियंत्रण के साथ एक खाली एचटीएमएल अभी भी दुर्घटनाग्रस्त हो जाता है। कुछ साल पहले कि मैं कोशिश किया था से प्रश्न में आपका उल्लेख बातें:

  • HTML से सभी निरपेक्ष और तय तैनात तत्वों निकाला जा रहा है (वास्तव में मैं पूरी सीएसएस हटा दिया सिर्फ अगर यह किसी भी प्रभाव पड़ता है देखने के लिए - यह नहीं करता है)।
  • का चयन सुनिश्चित करने के द्वारा-पुस्तक, कोई फर्जी गुण/टैग लिखा है।

कुछ भी मदद नहीं की।

किसी को भी यह क्या कारण हो सकता है के रूप में थोड़ी सी भी सुराग है?

+0

एंड्रॉइड में, ड्रॉपडाउन "ड्रॉप डाउन" (कम से कम आईसीएस से पहले नहीं) नहीं होते हैं, वे अलर्टडिअलॉग के अंदर एक सूची में विकल्प दिखाते हैं, इसलिए वह कहां से आता है। हां, मुझे नहीं पता कि समस्या क्यों होती है। – dmon

+0

आपको यह देखने के लिए अपना HTML (या नमूना) पोस्ट करना चाहिए कि कोई ऐसा व्यक्ति ढूंढ सकता है जो क्रैश का कारण बन सकता है। क्या आपने एक सरल चयन के साथ प्रयास किया है? – dmon

+0

इतना आसान लगता है कि वेबव्यू को काम करने की आवश्यकता कितनी सरल है? मेरा मतलब है, वही वेब व्यू बहुत भारी सीएसएस और जेएस एनीमेशन संभाला और क्या नहीं, और सब कुछ peachy था। –

उत्तर

0

महीने से अधिक के लिए वेब पर सभी देखने के बाद, मैं छोड़ दिया और मूल कोड के लिए सभी का चयन करता है रिले की जाती है।

कुछ है कि चयन, बाँध क्लिक हैंडलर कि JavascriptInterface पर एक विधि की शुरूआत की तरह दिखता है के साथ चयन बदलें और इसे करने के लिए का चयन करता है विकल्प मान पास, विधि एक RadioGroup के साथ एक Dialog खोलने देते, RadioButton रों का प्रतिनिधित्व करने के साथ समूह को भरने विकल्प। चयनित होने पर, सूचकांक को हल करने और जावास्क्रिप्ट (चुनिंदा उदाहरण का शुभारंभ किया है कि इस प्रक्रिया में कुछ वर में पहली बचाया जाना चाहिए) के लिए इसे वापस गुजरती हैं।

यह नरक के रूप में बदसूरत है, लेकिन दुख की बात है कि कुछ भी काम नहीं कर रहा था।

+0

क्या आप एक कामकाजी कोड प्रदान कर सकते हैं? –

+0

मेरी इच्छा है। यह जीवनभर पहले था और कोड उस कंपनी के स्वामित्व में है जिसका मैं अब काम नहीं करता हूं। –

+0

क्या मैं समझता हूं कि उन सभी वर्षों के बाद बकवास अभी भी हो रहा है ?! –

1

यह क्रैश हो गया है क्योंकि आपने वेबदृश्य पर ApplicationContext दिया है। जब कोई चयन टैग क्लिक किया जाता है, तो एंड्रॉइड आंतरिक रूप से देशी AlertDialog का उपयोग करके अपने विकल्पों को प्रदर्शित करता है।
वेबव्यू एक गतिविधि संदर्भ के साथ बनाया जाना चाहिए क्योंकि AlertDialog उदाहरण को Activity संदर्भ की आवश्यकता है।

2

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

समस्या को ठीक करने के लिए आप लेआउट (एक्सएमएल) फ़ाइल के माध्यम से गतिविधि संदर्भ को नीचे दिखाए गए अनुसार पारित कर सकते हैं।

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:fitsSystemWindows="true" 
    tools:context="com.myApp.Activities.WebViewActivity"> 

    <WebView 
      tools:context="com.myApp.Activities.WebViewActivity" 
      android:layout_width="match_parent" 
      android:id="@+id/webView" 
      android:layout_height="match_parent"/> 

</LinearLayout> 

उपकरण: संदर्भ = "com.myApp.Activities.WebViewActivity"

+0

पर हो रहा है आप 6 साल पहले कहाँ थे? :) –

0
देर खेल के लिए

, लेकिन मैं आधे से एक कार्य दिवस के लिए पढ़ रहा है, और के लिए अलग अलग समाधान की कोशिश कर रहा कई कामकाजी दिन, और इस धागे पर बार-बार वापस आ गए। मेरे अंदर एक वेबव्यू के साथ एक टुकड़ा था, और एंड्रॉइड संस्करण पूर्व ओरेओ (28) एचटीएमएल में एक चयन का चयन करते समय दुर्घटनाग्रस्त हो गया, जबकि 28+ ने इसे अनदेखा किया।

यह क्या Diffy कहा और Igor_K कहा है (हालांकि Diffy के समाधान काम नहीं किया): यह गलत संदर्भ है। मुझे यह हल करने के लिए this thread था। मैं नीचे दिए गए उत्तर की प्रतिलिपि बनाउंगा:

प्यार के ढेर मनीष शर्मा इस उत्तर के लिए।

WebView के लिए आप वेबव्यू प्रारंभ करने के लिए एक विधि बना सकते हैं नए संदर्भ पारित करने के लिए, संदर्भ का एक तर्क गुजर नीचे दिखाया गया है जैसे:

public static Webview initializeWebView(Context context) 
{ 

    myWebView = new WebView(); 
    return myWebView; 

} 

और इस के बाद आप इस विधि कॉल कर सकते हैं जब भी आप चाहें और चाहें। जैसा कि नीचे दिखाया आप इस कॉल कर सकते हैं:

myWebView = initializeWebView(YourActivityName.this); 
//this way whatever Context you will pass your webview will be initialized that way 
//for example you can also pass getApplicationContext() as an Argument 
myWebView = initializeWebView(getApplicationContext()); 
//or 
myWebView = initializeWebView(customContext); 

इस customContext किसी भी संदर्भ है कि अन्य संदर्भ है कि आप उपयोग करना चाहता था से प्राप्त होती है हो सकता है।

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