Попытка вызвать метод интерфейса 'void android.view.inputmethod.InputConnection.closeConnection()' в ссылке на нулевой объект

среда: код Android Studio 3.1.1:

import com.firebase.ui.auth.AuthUI;
...
    private void startSignIn()
    {
        // Sign in with FirebaseUI
        Intent intent = AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setIsSmartLockEnabled(false)
                .setAvailableProviders(Arrays.asList(
                        new AuthUI.IdpConfig.EmailBuilder().build(),
                        new AuthUI.IdpConfig.GoogleBuilder().build()
                ))
                .build();

        startActivityForResult(intent, RC_SIGN_IN);
        mViewModel.setIsSigningIn(true);

    }

Ошибка появилась, когда я удалил свою учетную запись в firebase> Authentication> USERS и попытался снова зарегистрироваться с тем же адресом электронной почты.

Когда я выбираю вход в систему с электронной почтой и вводю электронное письмо, и нажмите "Далее", приложение остановилось...

он должен создать новую учетную запись

код ошибки:

java.lang.NullPointerException: Attempt to invoke interface method 'void android.view.inputmethod.InputConnection.closeConnection()' on a null object reference
        at android.view.inputmethod.InputConnectionWrapper.closeConnection(InputConnectionWrapper.java:270)
        at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:541)
        at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

любая идея, что пошло не так?

Ответ 1

Это происходило со мной на реальном устройстве.

У меня был EditText, который я программно очищал и скрывал мягкую клавиатуру после того, как пользователь отправил текст. И когда пользователь переключился на другой фрагмент, функция InputConnection была закрыта, но редко она была нулевой.

Вызов EditText.clearFocus() после отправки текста исправил проблему для меня, как сразу вызвал InputConnection.closeConnection, а не onCreateView другого фрагмента.

Также следует работать с вызовом clearFocus в onPause фрагмента/действия с помощью EditText.

Ответ 2

Похоже, что проблема с Android Profiler.

Поскольку нам не нужно включать расширенный профилирование явно для API> = 26, после открытия вкладки "Android Profiler" в Android Studio, она ловит ваше приложение и связывается с ним.

Что мне помогло, я перейду на вкладку Android Profiler и нажав "Завершить сеанс" в правом верхнем углу.

See the screenshot

Ответ 3

Наконец, я решаю проблему, удалив приложение на симуляторе,

и запустите и установите приложение еще раз.

это похоже на эту проблему, вызванную кешем, я не уверен

Ответ 4

Я думаю, что эта проблема связана с имитационной средой. У меня была аналогичная проблема в эмуляторе, но не на моем телефоне.

Если я использовал мышь в симуляторе, он разбился, когда я меняю фрагменты, но если я использую только клавиатуру, авария не возникает.

Решение: я обновил эмулятор, и проблема исчезла.

Ответ 5

У меня была очень похожая проблема, и предложение @Sfseyhan называть clearFocus() в onPause() не onPause() и не View.OnFocusChangeListener мой View.OnFocusChangeListener s). Я получал два исключения довольно последовательно, всякий раз, когда мягкая клавиатура показывала сфокусированный на EditText:

  • Если редактирование, но затем запуск нового действия: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.inputmethod.InputConnection.finishComposingText()' on a null object reference

а также

  • Если редактирование, но затем нажмите кнопку "Домой", чтобы вернуться в java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.inputmethod.InputConnection.reportFullscreenMode(boolean)' on a null object reference запуска: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.inputmethod.InputConnection.reportFullscreenMode(boolean)' on a null object reference

Похоже, что проблема связана с Android Studio (https://issuetracker.google.com/issues/77764953). Я использовал v3.1.3, но, как говорится в выпуске, они v3.1.3 проблему с Android Studio 3.2 Canary 18. Я подтвердил с моей стороны Android Studio 3.2 Beta 2 что у меня больше нет сбоев.

Ответ 6

Соблюдайте эту проблему при удалении текущего фрагмента и о том, как использовать другой фрагмент.

После использования разных методов: проблема была обнаружена только тогда, когда устройство подключено в режиме отладки.

NPE: попытка вызвать метод интерфейса "void android.view.inputmethod.InputConnection.closeConnection()" по ссылке нулевого объекта → Сбой при закрытии соединения с EditText (после разного наблюдения я получил этот вывод)

Разрешение: None - Works fine in normal condition on device (Without debug mode)

Другое Решение: Update Android Studio to latest

или же

Перейдите в Edit configuration settings → Profiling → Enable advanced profiling

Ответ 7

Я пробовал все решения из этого потока, однако проблема не была решена.

После того, как я столкнулся с этим сообщением в блоге. Как это предлагается в сообщении в блоге, я изменил варианты сборки от отладки до выпуска, и проблема решена.

Перед установкой версии выпуска необходимо полностью удалить приложение отладки с устройства.