web-dev-qa-db-fra.com

InputConnection.finishComposingText () NullPointerException

Je reçois ce journal des erreurs sur crashlytics. Je ne sais pas ce qui fait que cet accident… .. Il se produit sur les appareils Android 4.x, 5.x et 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)
22
Eren Utku

Assurez-vous que la connexion d'entrée n'est pas nulle dans votre méthode de remplacement onCreateInputConnection.

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

Où MyInputConnectionWrapper est votre encapsuleur de connexion d'entrée personnalisé, étendu à partir de InputConnectionWrapper.

10
ocihangir

Comme mentionné ici , cela peut arriver à cause de l'outil Android Advanced Profiling

Désactivez-le à partir de la boîte de dialogue Run/Debug Configurations:

 disabling advanced profiling

51
MasterScrat

Cela m'est également arrivé à cause de l'option profilage avancé est activée.

Pour désactiver le profilage avancé, procédez comme suit:

  1. Sélectionnez Exécuter> Modifier les configurations.
  2. Sélectionnez votre module d'application dans le volet de gauche.
  3. Cliquez sur l'onglet profilage, puis décochez activer le profilage avancé . En savoir plus

 screenshot

11
Chivorn

La réponse ci-dessus devrait être correcte, mais dans mon scénario, la raison de cette erreur est la suivante: Edittext a le focus, et cette erreur se produit lorsque edittext.getText() est utilisé .
edittext.gettext().toString(); Remarque: cet edittext doit avoir le focus pour provoquer cette erreur.

1
DaFengA

Supposons que le fragment ou l'activité ait un EditTextView non nommé nommé mTv; À un moment opportun, mTv.requestFocuse(); Cela fonctionne pour moi. J'espère que cela vous aide.

0
Qun Qin