56

更新到 Android Studio 3.1 后,当 EditText 成为焦点时,我遇到了异常

E/AndroidRuntime: FATAL EXCEPTION: main
Process: <package>, PID: 18938
java.lang.StackOverflowError: stack size 8MB
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)
    at android.view.inputmethod.InputConnectionWrapper.getTextBeforeCursor(InputConnectionWrapper.java:46)

知道如何解决这个问题吗?

更新:

经过一番研究,我发现 StackOverflowError 出现了带有简单 EditText 的不同堆栈跟踪:

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"/>

尝试输入任何符号时,我得到:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: <package>, PID: 21122
java.lang.StackOverflowError: stack size 8MB
    at android.view.inputmethod.InputConnectionWrapper.beginBatchEdit(InputConnectionWrapper.java:106)

当我回击时:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: <package>, PID: 21280
java.lang.StackOverflowError: stack size 8MB
    at android.view.inputmethod.InputConnectionWrapper.finishComposingText(InputConnectionWrapper.java:78)

即使在 WebView 中输入文本也会导致此错误

在 AS 3.0 EditText 的工作正常

4

5 回答 5

75

正如@evi指出的那样,高级分析中存在一个错误

现在禁用它(编辑配置设置 -> 分析 -> 启用高级分析)可防止 EditText 崩溃

更新:

Android Studio 3.1.1中发布的修复

再次提供高级分析!

于 2018-03-28T07:15:48.470 回答
7

这似乎只发生在 Android 6.0 设备上,EditText 在 Android 5 和 android 7 设备上运行良好。在运行配置中禁用高级分析(API < 26)对我有用。

于 2018-03-28T00:39:21.767 回答
6

Android 5.1.1,同样的问题。似乎是新 Android Studio 中的一个错误。禁用高级分析修复了调试构建的问题。

于 2018-03-28T14:42:15.557 回答
2

刚更新到 Android Studio 3.1 后就面临相同的 EditText 问题。尝试设置调试构建类型debuggable falsebuild.gradle或者只是切换到发布构建类型,因为默认情况下它是错误的。这对我有帮助。

更新:确认禁用高级分析也解决了我的问题。

于 2018-03-27T14:33:40.337 回答
0

我有同样的问题,但之后:

  • 删除 .idea、.gradle、gradle 文件夹并重新创建它。
  • 清洁项目。
  • 重建应用程序。

这个对我有用。

于 2018-03-27T15:40:37.620 回答