google java android crashlytics crash-reports

java - google - InputConnection.finishComposingText() NullPointerException



firebase crash reporting to crashlytics (5)

Asegúrese de que la conexión de entrada no sea nula en su método de anulación onCreateInputConnection.

@Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection inputConnection = super.onCreateInputConnection(outAttrs); if (inputConnection == null) { return null; } return new MyInputConnectionWrapper(inputConnection, true); }

Donde MyInputConnectionWrapper es su envoltorio de conexión de entrada personalizado que se extiende desde InputConnectionWrapper.

Estoy recibiendo este registro de error en crashlytics. No sé qué hace este choque. Ocurre en dispositivos Android 4.x, 5.x, 6.x. (Samsung, Sony, LGE etc.)

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)


La respuesta anterior debe ser correcta, pero en mi escenario, la razón de este error es: Edittext tiene enfoque, y este error se produce cuando se usa edittext.getText() . Para evitar este error debes:
edittext.gettext().toString(); Nota: Este texto de edición debe tener enfoque para hacer este error.


Supongamos que el fragmento o la actividad no tienen un EditTextView llamado mTv; En algún momento apropiado, mTv.requestFocuse() ; Esto funciona para mí. Espero que esto te ayude.


También me pasó porque la opción de Perfilado Avanzado está habilitada.

Para deshabilitar el perfil avanzado, siga estos pasos:

  1. Seleccione Ejecutar > Editar configuraciones .
  2. Seleccione el módulo de su aplicación en el panel izquierdo.
  3. Haga clic en la pestaña Perfilado y, a continuación, desmarque Habilitar perfilado avanzado . Aprende más


Como se mencionó aquí , esto puede suceder debido a la herramienta de Android Advanced Profiling .

Deshabilítelo desde el cuadro de diálogo Run/Debug Configurations :