ObA*_*bAt 29 java android illegalstateexception
当我在EditText中输入内容时,我的应用程序不断崩溃,但这种情况在某些情况下不会发生.我正在使用Android 4.0.4(ICS)在三星Galaxy Tab 2 10.1 WiFI和3G(GT-P5100)上运行我的应用程序.我使用股票键盘.
这是我的logcat:
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)
Run Code Online (Sandbox Code Playgroud)
这是我的一个EditTexts:
<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" />
Run Code Online (Sandbox Code Playgroud)
Tat*_*ize 30
当ImeOptions设置为EditorInfo.IME_ACTION_NEXT或时,会发生此错误EditorInfo.IME_ACTION_PREVIOUS.虽然该视图的父级不可聚焦,但下一个找到的焦点对象不可聚焦.
它调用以找到应该快速跳转到的下一个焦点项,但这不存在或不可调焦,它会抛出此错误.如果下一个被隐藏并因此无法聚焦或者父实际上不能实际处理findFocus()调用并返回null,则会发生这种情况.
因此解决方案相当容易.在这种情况下,不要将其设置为下一个IME_ACTION.如果您无法快速从文本字段跳转到文本字段,则可以使该操作成为可行或将操作切换为DONE.
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)
请注意在违规位之前的代码中的注释:
这是对某些默认操作的处理.请注意,为了向后兼容,如果没有给出明确的ime选项,我们不会执行此默认处理,而是将其转换为应用程序可能期望的正常输入键代码.
如果您设置edittext类型或者如果您提供的功能错误的显式IME,则不会执行此操作.或者让父对象可以在下一个或其他任何东西上聚焦.它只是后备位中的遗留代码,有时可能没有给定的操作.
jar*_*etz 17
我遇到了同样的崩溃,虽然听起来不像确切的情况,但这可能仍然有用:
我有两个EditText框.最下面一个是前一个下一个焦点.在某些情况下我会隐藏底部的盒子,所以当我从顶部盒子敲击键盘的下一个时,它会尝试去底部,但是因为它被隐藏会崩溃.我通过将底部框(另一个EditText的Next Down Focus的目标)设置为不可聚焦来修复此问题:
EditText inputBox = (EditText)findViewById(R.id.Bottom_Box);
inputBox.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
Par*_*ngh 12
以前的答案都不适合我.我在recyclerview中使用editText,当下一个editText不在视图中时,它无法获得焦点.
我检查了问题的原因,这是在TextView类中:
// This is the handling for some default action.
// Note that for backwards compatibility we don't do this
// default handling if explicit ime options have not been given,
// instead turning this into the normal enter key codes that an
// app may be expecting.
if (actionCode == EditorInfo.IME_ACTION_NEXT) {
View view = focusSearch(FOCUS_FORWARD);
if (view != null) {
if (!view.requestFocus(FOCUS_FORWARD)) {
throw new IllegalStateException("focus search returned a view "
+ "that wasn't able to take focus!");
}
}
return;
}
Run Code Online (Sandbox Code Playgroud)
我更新我的editText以侦听任何编辑器操作并执行此操作:
companyNameET.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
View view = textView.focusSearch(FOCUS_FORWARD);
if (view != null) {
if (!view.requestFocus(FOCUS_FORWARD)) {
return true;
}
}
return false;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12031 次 |
| 最近记录: |