web-dev-qa-db-ja.com

InputConnection.finishComposingText()NullPointerException

Crashlyticsでこのエラーログを取得しています。このクラッシュの原因はわかりません。 Android 4.x、5.x、6.xデバイスで発生します。(Samsung、Sony、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)
24
Eren Utku

OnCreateInputConnectionオーバーライドメソッドで入力接続がnullでないことを確認してください。

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

ここで、MyInputConnectionWrapperは、InputConnectionWrapperから拡張されたカスタム入力接続ラッパーです。

11
ocihangir

ここで述べたように 、これはAndroid Advanced Profilingツールが原因で発生する可能性があります。

Run/Debug Configurationsダイアログから無効にしてください:

disabling advanced profiling

54
MasterScrat

高度なプロファイリングオプションが有効になっているため、私にも起こりました。

高度なプロファイリングを無効にするには、次の手順に従います。

  1. 選択実行>編集構成
  2. 左側のペインでアプリモジュールを選択します。
  3. プロファイリングタブをクリックし、高度なプロファイリングを有効にする詳細

screenshot

10
Chivorn

上記の答えは正しいはずですが、私のシナリオでは、このエラーの理由は次のとおりです。Edittextにフォーカスがあり、edittext.getText()を使用すると、このエラーが発生します。このエラーを回避するには、次のことを行う必要があります。
edittext.gettext().toString();注:このエラーを発生させるには、この編集テキストにフォーカスが必要です。

1
DaFengA

フラグメントまたはアクティビティにmTvという名前の非EditTextViewがあると想定します。適切な時期に、mTv.requestFocuse();これは私にとってはうまくいきます。これがお役に立てば幸いです。

0
Qun Qin