InputConnection.finishComposingText() 空指针异常
InputConnection.finishComposingText() NullPointerException
我在 crashlytics 上收到此错误日志。我不知道是什么导致了这次崩溃。
它发生在 Android 4.x、5.x、6.x 设备上。 (三星、索尼、LGE 等)
Fatal Exception: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.inputmethod.InputConnection.finishComposingText()' on a null object reference
at android.view.inputmethod.InputConnectionWrapper.finishComposingText(InputConnectionWrapper.java:78)
at android.view.inputmethod.InputMethodManager.checkFocusNoStartInput(InputMethodManager.java:1809)
at android.view.inputmethod.InputMethodManager.checkFocus(InputMethodManager.java:1761)
at android.view.inputmethod.InputMethodManager.isActive(InputMethodManager.java:883)
at android.widget.Editor$CursorAnchorInfoNotifier.updatePosition(Editor.java:4095)
at android.widget.Editor$PositionListener.onPreDraw(Editor.java:2564)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1018)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2313)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1301)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7021)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6918)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
确保您的 onCreateInputConnection 覆盖方法中的输入连接不为空。
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
if (inputConnection == null)
{
return null;
}
return new MyInputConnectionWrapper(inputConnection,
true);
}
其中 MyInputConnectionWrapper 是您的自定义输入连接包装器,它是从 InputConnectionWrapper 扩展而来的。
假设片段或 Activity 有一个名为 mTv 的非 EditTextView;在适当的时候,mTv.requestFocuse()
;这对我有用。希望对你有帮助。
,这可能是因为 Android Advanced Profiling
工具。
从 Run/Debug Configurations
对话框禁用它:
由于 Advanced Profiling 选项启用,我也遇到了这种情况。
要禁用高级分析,请按照下列步骤操作:
- Select 运行 > 编辑配置.
- Select 您的应用程序模块在左窗格中。
- 单击 Profiling 选项卡,然后取消选中 Enable advanced profiling。
Learn more
上面的回答应该是正确的,但是在我的场景中,出现这个错误的原因是:
Edittext 有焦点,使用 edittext.getText()
时出现此错误。
要避免此错误,您必须:
edittext.gettext().toString();
注意:这个edittext必须有焦点才会出现这个错误。
我在 crashlytics 上收到此错误日志。我不知道是什么导致了这次崩溃。 它发生在 Android 4.x、5.x、6.x 设备上。 (三星、索尼、LGE 等)
Fatal Exception: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.inputmethod.InputConnection.finishComposingText()' on a null object reference
at android.view.inputmethod.InputConnectionWrapper.finishComposingText(InputConnectionWrapper.java:78)
at android.view.inputmethod.InputMethodManager.checkFocusNoStartInput(InputMethodManager.java:1809)
at android.view.inputmethod.InputMethodManager.checkFocus(InputMethodManager.java:1761)
at android.view.inputmethod.InputMethodManager.isActive(InputMethodManager.java:883)
at android.widget.Editor$CursorAnchorInfoNotifier.updatePosition(Editor.java:4095)
at android.widget.Editor$PositionListener.onPreDraw(Editor.java:2564)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1018)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2313)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1301)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7021)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6918)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
确保您的 onCreateInputConnection 覆盖方法中的输入连接不为空。
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
if (inputConnection == null)
{
return null;
}
return new MyInputConnectionWrapper(inputConnection,
true);
}
其中 MyInputConnectionWrapper 是您的自定义输入连接包装器,它是从 InputConnectionWrapper 扩展而来的。
假设片段或 Activity 有一个名为 mTv 的非 EditTextView;在适当的时候,mTv.requestFocuse()
;这对我有用。希望对你有帮助。
Android Advanced Profiling
工具。
从 Run/Debug Configurations
对话框禁用它:
由于 Advanced Profiling 选项启用,我也遇到了这种情况。
要禁用高级分析,请按照下列步骤操作:
- Select 运行 > 编辑配置.
- Select 您的应用程序模块在左窗格中。
- 单击 Profiling 选项卡,然后取消选中 Enable advanced profiling。 Learn more
上面的回答应该是正确的,但是在我的场景中,出现这个错误的原因是:
Edittext 有焦点,使用 edittext.getText()
时出现此错误。
要避免此错误,您必须:
edittext.gettext().toString();
注意:这个edittext必须有焦点才会出现这个错误。