2012-11-28 14 views
15

जब मैं एडिटटेक्स्ट में कुछ टाइप करता हूं तो मेरा एप्लिकेशन क्रैश हो रहा है, लेकिन यह हमेशा कुछ मामलों में नहीं होता है। मैं एंड्रॉइड 4.0.4 (आईसीएस) के साथ सैमसंग गैलेक्सी टैब 2 10.1 वाईफ़ाई & 3 जी (जीटी-पी 5100) पर अपना ऐप चला रहा हूं। मैं स्टॉक कीबोर्ड का उपयोग करता हूं।घातक दुर्घटना: फोकस खोज ने एक दृश्य वापस कर दिया जो ध्यान केंद्रित करने में सक्षम नहीं था

11-28 21:43:01.007: E/AndroidRuntime(15540): java.lang.IllegalStateException: focus search returned a view that wasn't able to take focus! 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.widget.TextView.onKeyUp(TextView.java:5833) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.KeyEvent.dispatch(KeyEvent.java:2659) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.View.dispatchKeyEvent(View.java:5547) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2027) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1388) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.app.Activity.dispatchKeyEvent(Activity.java:2324) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1954) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3360) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2618) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.os.Looper.loop(Looper.java:137) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at android.app.ActivityThread.main(ActivityThread.java:4514) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at java.lang.reflect.Method.invokeNative(Native Method) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at java.lang.reflect.Method.invoke(Method.java:511) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
11-28 21:43:01.007: E/AndroidRuntime(15540): at dalvik.system.NativeStart.main(Native Method) 

यह मेरा EditTexts की मेरी एक है:

यह मेरा logcat है

<EditText 
    android:id="@+id/input_ftu_position_other" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="64dp" 
    android:ems="20" 
    android:inputType="text" /> 
+1

कृपया कुछ कोड पोस्ट करें। – Codeman

+2

मुझे नहीं पता कि मुझे कौन सी कोड पोस्ट करनी है क्योंकि मुझे नहीं पता कि मेरा कोड कब – ObAt

उत्तर

9

मैं इस एक ही दुर्घटना हो रही थी और हालांकि यह सटीक स्थिति की तरह ध्वनि नहीं है, शायद यह अभी भी मददगार साबित होंगे:

मैं दो EditText बॉक्स था। नीचे वाला सबसे ऊपर अगला फोकस डाउन था। कुछ परिस्थितियों में मैं निचले बॉक्स को छुपा दूंगा, इसलिए जब मैं शीर्ष बॉक्स से कीबोर्ड पर अगला हिट करता हूं, तो वह नीचे जाने की कोशिश करेगा, लेकिन यह छिपे जाने के बाद दुर्घटनाग्रस्त हो जाएगा। मैं फ़ोकस करने योग्य नहीं के रूप में नीचे बॉक्स (एक और EditText की अगली नीचे फोकस का लक्ष्य) सेट करके ऐसा तय:

EditText inputBox = (EditText)findViewById(R.id.Bottom_Box); 
    inputBox.setFocusable(false); 

मुझे आशा है कि इस मदद करता है।

+1

सेटफोकसबल (झूठा) संपादन टेक्स्ट को संपादन योग्य नहीं बनाता है, यह जांचने के लिए बेहतर है कि आपको संपादन योग्य की आवश्यकता है या नहीं .. बस इसे जोड़ना मेरे जैसे कुछ शरीर की मदद कर सकते हैं ... – praveenb

3

मैं TextView स्रोत कोड का पता लगाने और त्रुटि लॉग इन करने का मिलान करने के लिए एक और समाधान है,

TextView.java:

if (!hasOnClickListeners()) { 
    View v = focusSearch(FOCUS_DOWN); 

    if (v != null) { 
     if (!v.requestFocus(FOCUS_DOWN)) { 
      throw new IllegalStateException(
        "focus search returned a view " + 
        "that wasn't able to take focus!"); 
     } 
    } 
} 

परिणामस्वरूप, मुझे लगता है कि आप से बचने के लिए View.OnClickListener दे सकता है के रूप में त्रुटि हुई।

पूर्व: textView.setOnClickListener (नया ऑनक्लिक लिस्टनर);

+0

आपने अपना जीवन बचाया। बहुत बहुत धन्यवाद जीनियस .... – Ruban

1

मैं इस समस्या थी और इस तरह यह तय:

public void setEditable(boolean flag) { 
    mEditText.setFocusableInTouchMode(flag); 
    mEditText.setFocusable(flag); 
    mEditText.setClickable(flag); 
} 
5

यह त्रुटि तब होती है जब ImeOptions EditorInfo.IME_ACTION_NEXT या EditorInfo.IME_ACTION_PREVIOUS को तैयार है। जबकि उस दृश्य के माता-पिता फोकस करने योग्य नहीं हैं, या अगली मिली फोकस ऑब्जेक्ट फोकस करने योग्य नहीं है।

यह अगले फोकस आइटम को खोजने के लिए कहता है जिसे जल्दी से कूदना चाहिए लेकिन यह अस्तित्व में नहीं है या फोकस करने योग्य नहीं है, यह इस त्रुटि को फेंकता है। ऐसा होगा अगर अगला छुपा हुआ है और इस प्रकार फोकस करने योग्य नहीं है या माता-पिता वास्तव में findFocus() कॉल से निपट नहीं सकते हैं और शून्य लौटा सकते हैं।

इस प्रकार समाधान इतना आसान है। इस मामले में अगली बार IME_ACTION पर सेट न करें। यदि आप टेक्स्ट फ़ील्ड से टेक्स्ट फ़ील्ड में जल्दी से कूद नहीं सकते हैं तो या तो इसे करने योग्य बनाएं या कार्रवाई को चालू करने के लिए स्विच करें।

edittext.setImeOptions(EditorInfo.IME_ACTION_DONE); 

नोट हमलावर बिट से पहले कोड में टिप्पणी:

यह कुछ डिफ़ॉल्ट कार्रवाई के लिए उपयोग होता है। ध्यान दें कि पीछे की ओर संगतता के लिए हम यह डिफ़ॉल्ट हैंडलिंग नहीं करते हैं यदि स्पष्ट ime विकल्प नहीं दिए गए हैं, बल्कि इसे सामान्य में बदलना महत्वपूर्ण कोड दर्ज करें जो ऐप की अपेक्षा की जा सकती है।

यदि आप संपादन प्रकार सेट करते हैं या यदि आप एक स्पष्ट आईएमई देते हैं जो कार्यात्मक रूप से गलत नहीं है तो यह ऐसा नहीं करेगा। या एक मूल वस्तु है जो अगली या किसी और चीज पर केंद्रित है। यह फ़ॉलबैक बिट में केवल विरासत कोड है जिसे कभी-कभी संभवतः दी गई कार्रवाई नहीं हो सकती है।

+1

बहुत बहुत धन्यवाद! जब तक मैं आपका जवाब नहीं पढ़ता तब तक मुझे दुर्घटना का कारण नहीं मिला। मैं अपने एडिटटेक्स्ट में निम्नलिखित जोड़कर इस समस्या को हल करने में सक्षम था: 'एंड्रॉइड: imeOptions = "actionDone" ' –

+0

मेरे मामले में क्रैश हुआ जब सॉफ्ट कीबोर्ड पर अगली कुंजी ने संपादन टेक्स्ट से फ़ोकस को रेडियो ग्रुप में बदलने की कोशिश की ! सेटिंग 'एंड्रॉइड: imeOptions = "actionDone" 'EditText पर समस्या समाप्त हो गई थी। धन्यवाद! –