2017-02-10 17 views
9

मुझे बहुत रोचक समस्या है। मैं अपने एंड्रॉइड एप्लिकेशन में ऐपब्रोसर और स्पिनर का उपयोग करता हूं। स्पिनर ProgressDialog के साथ लागू किया गया है। यहां समस्या यह है कि जब मैं inAppBrowser के माध्यम से एक वेब पेज खोलने का प्रयास करता हूं और पेज लोड होने के बाद लोडिंग स्पिनर लोड हो जाता है और फिर पृष्ठ लोड करने के बाद बंद हो जाता है, जब मैं उस पृष्ठ के इनपुट फ़ील्ड पर टैप करता हूं और कोशिश करता हूं अक्षर या संख्या टाइप करें, यह सिर्फ उस तथाकथित "लॉक" स्थिति में रहता है। अगर मैं कुछ टाइप करता हूं तो मैं उन्हें नहीं देख सकता, कर्सर बस झपकी रखता है।InAppBrowser और स्पिनर लोडिंग के साथ पृष्ठ लोड करने के बाद इनपुट फ़ील्ड में टाइप नहीं किया जा सकता

इसे और भी अजीब बनाने के लिए, मैं विशेष वर्ण टाइप करने में सक्षम हूं। यदि मैं पृष्ठ के चारों ओर किसी अन्य स्थान पर टैप करता हूं, तो उसी इनपुट फ़ील्ड पर फिर से टैप करें, फिर यह काम करता है। जब यह काम करता है तो एक और मामला यह है कि जब मैं एप्लिकेशन को रोक स्थिति में डालता हूं और फिर इसे फिर से शुरू करता हूं, इनपुट फ़ील्ड काम करता है।

यह समस्या केवल संस्करण 5.0.1 और पुराने संस्करण के एंड्रॉइड प्लेटफ़ॉर्म में होती है।

inAppBrowser जावा फ़ाइल InAppBrowser java file पर गिथब में पाई जा सकती है।

मेरे स्पिनर कार्यान्वयन निम्नलिखित है:

spinner = new ProgressDialog(cordova.getActivity()); 
spinner.setIndeterminate(false); 
spinner.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
spinner.setCancelable(false); 
spinner.setMessage(cordova.getActivity().getText(R.string.spinner_loading)); 
spinner.setTitle(""); 

और मैं/निम्नलिखित तरीके के साथ एक स्पिनर को छिपाने दिखाने:

@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    super.onPageStarted(view, url, favicon); 
    //InAppBrowser default code.... 

    try { 
     JSONObject obj = new JSONObject(); 
     obj.put("type", LOAD_START_EVENT); 
     obj.put("url", newloc); 

     sendUpdate(obj, true); 

    } catch (JSONException ex) { 
     Log.d(LOG_TAG, "Should never happen"); 
    } 

    spinner.show(); 
} 

public void onPageFinished(WebView view, String url) { 
    super.onPageFinished(view, url); 
    try { 
     JSONObject obj = new JSONObject(); 
     obj.put("type", LOAD_STOP_EVENT); 
     obj.put("url", url); 

     sendUpdate(obj, true); 

    } catch (JSONException ex) { 
     Log.d(LOG_TAG, "Should never happen"); 
    } 

    spinner.hide(); 
} 

यहाँ क्या समस्या हो सकती है? कोई सुझाव, सुझावों की सराहना की जाएगी।

+0

क्या आप क्रोम इंस्पेक्टर का उपयोग करके डिवाइस में ऐप डीबग कर सकते हैं और जांच सकते हैं कि कंसोल में कोई त्रुटि है या नहीं? – Gandhi

+0

@ गंधी: मैंने इसे पहले ही तय कर दिया है, टिप्पणी के लिए धन्यवाद। –

उत्तर

5

अब मैं समस्या को ठीक करने में सक्षम था। समस्या उस विशिष्ट पृष्ठ इनपुट फ़ील्ड का फोकस था। कुछ कारणों से पृष्ठ लोड होने के समाप्त होने के बाद इसे स्वयं पर ध्यान नहीं मिला।

editText.clearFocus() का उपयोग कर इनएपब्रोसर की inAppBrowser.java फ़ाइल के भीतर समस्या को ठीक करने का प्रयास कर रहा है और फिर editText.requestFocus() बिल्कुल मदद नहीं करता है। लेकिन मेरे लिए क्या काम किया गया समाधान का पालन कर रहा था।

चूंकि InAppBrowser में executeScript() नामक एक विधि है, इसलिए मैं उस विशिष्ट इनपुट फ़ील्ड में कुछ जावास्क्रिप्ट कोड इंजेक्ट करने में सक्षम था जिसमें यह समस्या थी।

var ref = cordova.InAppBrowser.open('http://apache.org', '_blank', location=yes'); 
ref.addEventListener('loadstop', function() { 
    ref.executeScript({code: "$('#element').blur(); $('#element').focus();"}); 
}); 

क्या है कि कोड है कि यह पहली बार है कि विशिष्ट तत्व से बाहर फोकस साफ हो जाएगा और उसके बाद फिर है कि एक ही तत्व पर ध्यान केंद्रित है करता है: इस प्रकार निम्नलिखित कोड चाल किया था।

यह किसी भी मंच पर काम करने के लिए बदल गया जो कि बड़ी बात है।

+0

हाय, आपने यूआरएल पर कैसे ध्यान केंद्रित किया? यह आयनिक 3 में मेरे लिए काम नहीं करता है, मुझे यूआरएल पर ध्यान केंद्रित करने की आवश्यकता है ताकि मैं नया यूआरएल टाइप कर सकूं और सामान्य ब्राउज़र की तरह जा सकूं, जो मुझे कई वेबसाइट ब्राउज़ करने में मदद कर सकता है। क्या मैं इस तरह से काम कर सकता हूँ? –

0

अगर कोई मुझे अभी भी इस समस्या को प्राप्त कर रहा है, तो अंतिम संस्करण (1.7.2) में InAppBrowser प्लगइन को अपडेट करने का प्रयास करें।

ionic cordova plugin rm cordova-plugin-inappbrowser --save 
ionic cordova plugin add cordova-plugin-inappbrowser --save 

संस्करण 1.7.2 इस fix

आयोनिक (v3) का उपयोग करते हुए मैं है।

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

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