मैं हाल ही में इस मुद्दे में भाग गया और मेरे मामले में मैं यह समझने में कामयाब रहा कि एक माध्यमिक बग फिक्स इस मुद्दे का कारण बन रहा था।
तो, यदि आपने कस्टम क्लास नहीं बनाया है जो वेबव्यू बढ़ाता है, तो इस android bug report में एक सुझाव के कारण चेकआईएसटेक्स्ट एडिटर हमेशा सत्य लौटने के लिए ओवरराइड करता है ... मैं यहां पढ़ना बंद कर दूंगा।
यदि आपने ऐसा किया है, तो ऐसा लगता है कि यह फ़िक्स पहले ही एचटीसी द्वारा लागू किया गया है और किसी कारण से इसे फोकस प्राप्त होने पर क्रैश हो जाता है। यह समस्या दृश्य पर स्पर्श घटनाओं को रखकर और दृश्य दृश्यता सेट करके, मेरे लिए दो स्थानों पर प्रकट हुई। मेरी प्रोजेक्ट में मैंने एक वेब व्यू क्लाइंट सेट किया और तब तक इंतजार किया जब तक कि पृष्ठ दृश्यमान दृश्यमान दृश्य को सेट करने से पहले लोड हो गया था। यह निम्न स्टैक ट्रेस की वजह से:
java.lang.NullPointerException at android.webkit.WebView.navHandledKey(WebView.java:9353)
at android.webkit.WebView.requestFocus(WebView.java:7910)
at android.view.View.requestFocus(View.java:3718)
at android.view.View.requestFocus(View.java:3696)
at android.view.ViewRoot.focusableViewAvailable(ViewRoot.java:1803)
at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:474)
at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:474)
at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:474)
at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:474)
at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:474)
at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:474)
at android.view.View.setFlags(View.java:4680)
at android.view.View.setVisibility(View.java:3163)
आज़माएं/कैच मैं निर्धारित करने के लिए अगर मैं स्पर्श घटनाओं को ओवरराइड या नहीं करना चाहिए में सक्षम था में setVisibility कॉल लपेटकर द्वारा। अगर मैंने घटना पकड़ी, तो इसका मतलब यह होगा कि मुझे ओवरराइड अक्षम करना चाहिए। यह मैं क्या किया का एक उदाहरण है:
try {
webView.setVisibility(View.VISIBLE);
} catch (NullPointerException e) {
Log.i(TAG, "Error setting webview visibility due to overriding focus. It will be disabled.");
webView.setOverrideOnCheckIsTextEditor(false);
// Confirm window is visible
webView.setVisibility(View.VISIBLE);
}
मेरे कस्टम वेबव्यू अब इस तरह दिखता है, विशेष ध्यान देने की अंतिम दो तरीकों के लिए भुगतान किया:
/**
* When using a webview in a dialog, there are issues relating to the keyboard not appearing when focusing on a text box.
* This overrides a function to ensure the keyboard is shown when focusing on a text box in a webview.
* See link for bug report and solution.
*
* @see http://code.google.com/p/android/issues/detail?id=7189
* @see http://stackoverflow.com/questions/12325720
* @author James O'Brien
* @since 10/16/2012
*/
public class FocusableWebView extends WebView {
private boolean mOverrideCheckIsTextEditor = true;
/**
* Default Constructor
*
* @param context
*/
public FocusableWebView(Context context) {
super(context);
}
/**
* Default Constructor
*
* @param context
* @param attrs
*/
public FocusableWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Default Constructor
*
* @param context
* @param attrs
* @param defStyle
*/
public FocusableWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onCheckIsTextEditor() {
if (mOverrideCheckIsTextEditor) {
return true;
} else {
return super.onCheckIsTextEditor();
}
}
/**
* Enable/Disable overriding of onCheckIsTextEditor to always return true.
*/
public void setOverrideOnCheckIsTextEditor(boolean foo) {
mOverrideCheckIsTextEditor = foo;
}
}
खेद है कि मैं के बारे में अधिक विस्तार में जाने नहीं कर सकते यह इस मुद्दे को क्यों हल करता है। सभी मैं मान सकते हैं कि अपने ध्यान केंद्रित करने के लिए संबंधित और गतिशील रूप से अक्षम करने में यह एक इलाज :) काम करता है
** अद्यतन (12/11/12) **
ऊपर प्रस्तुत दोनों मुद्दों को हल करने प्रबंधित। यह वेबव्यू के फोकस के साथ एक मुद्दा प्रतीत होता था। मेरे कोड अब इस
webView.setVisibility(View.VISIBLE);
webView.setFocusable(true);
webView.requestFocus();
मुझे यकीन है कि आप स्पष्ट रूप से 'सही' या बुला setFocusable (सही) को फ़ोकस करने योग्य विशेषता सेट है कि करने का सुझाव देते हैं की तरह लग रहा है।
एंड्रॉइड रिलीज या डिवाइस निर्माताओं के लिए कोई पैटर्न? – CommonsWare
दिलचस्प अवलोकन! ऐसा लगता है कि एचटीसी उपकरणों तक ही सीमित है! – PacificSky
मैंने एचटीसी टैग जोड़ा है, क्योंकि एक मौका है कि आपको कुछ एचटीसी सहायता मिलेगी। मुझे लगता है कि आपके पास पुनरुत्पादित परीक्षण केस नहीं है - सही? – CommonsWare