EditText: NPE в InputConnection.reportFullscreenMode

Примечание: проблема, которую я пытаюсь обойти, ограничена китайскими планшетами без названия Rockchip RK312X с SDK 23 (Marshmallow). Похоже, никакие другие устройства не подвержены уязвимости, но, к сожалению, я вынужден использовать эти дрянные устройства (которые также имеют последовательные порты на них) для демонстрационных и демонстрационных целей.

Проблема: когда любой макет, содержащий любой подкласс EditText удаляется из окна (finish() вызывается в Activity, обычай DialogFragment приложение, содержащее EditText, закрывается и т. д.) происходит сбой приложения, что приводит к следующей трассировке стека (полный вывод)

java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.inputmethod.InputConnection.reportFullscreenMode(boolean)' on a null object reference
    at android.view.inputmethod.InputConnectionWrapper.reportFullscreenMode(InputConnectionWrapper.java:122)
    at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:416)
    at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:746)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)

Вот очень простой пример компоновки:

 <android.support.design.widget.TextInputLayout
        android:id="@+id/tilConnectionToken"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvSetupInfo"
        android:layout_marginEnd="15dp"
        android:layout_marginStart="15dp"
        android:layout_marginTop="10dp"
        android:ems="10"
        app:errorEnabled="true"
        android:hint="@string/conn_token">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/etConnectionToken"
            android:maxLines="1"
            android:inputType="text"
            android:imeOptions="actionDone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
  </android.support.design.widget.TextInputLayout>

Activity ничего не делает

class ConnectWizardActivity : AppCompatActivity(), View.OnClickListener {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_setup_wiz)
    btnCancel.setOnClickListener(this)
}


override fun onClick(v: View) {
    when (v.id) {
        R.id.btnCancel -> finish()
    }
  }
}

призвание finish() уже вызывает сбой с трассировкой стека, представленной выше. То, что я пробовал перед завершением занятия:

  • очистить фокус от EditText
  • скрывая мягкую клавиатуру
  • полностью удалив EditText (и другие Views) из своего контейнера

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

То, что я думаю, обычно должно происходить: этот журнал, например, исходит от Huawei MediaPad T3, никаких сбоев

W/IInputConnectionWrapper: finishComposingText on inactive InputConnection

Есть идеи, как обойти NPE на безымянных устройствах?

1 ответ

Решение

У меня возникла та же проблема, и я обнаружил, что виновником является функция "Advance profiling" в Android Studio.

Этот ответ объясняет, как отключить эту опцию. Надеюсь это поможет!

Другие вопросы по тегам