You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级至Android Studio 3.1后EditText获焦点时触发StackOverflowError

解决Android Studio 3.1升级后EditText获焦触发StackOverflowError的问题

嘿,这个坑我升级AS3.1的时候实打实踩过!EditText一获取焦点就直接崩,日志里全是InputConnectionWrapper.getTextBeforeCursor无限循环调用的栈信息,给你几个亲测有效的解决思路:

1. 检查自定义InputConnectionWrapper的实现

如果你自己写了InputConnectionWrapper的子类,大概率是重写方法时犯了循环调用的错误——比如在getTextBeforeCursor里不小心调用了this.getTextBeforeCursor,而不是父类的super.getTextBeforeCursor,直接导致无限套娃撑爆栈。

错误示例(别这么写!):

@Override
public CharSequence getTextBeforeCursor(int n, int flags) {
    // 这里调用自身方法,直接触发循环
    return this.getTextBeforeCursor(n, flags);
}

正确写法:

@Override
public CharSequence getTextBeforeCursor(int n, int flags) {
    // 老老实实调用父类实现,避免循环
    return super.getTextBeforeCursor(n, flags);
}

另外也别忘了排查第三方库——有些文本格式化、输入法相关的库可能也存在这个问题,看看有没有更新版本修复了该bug。

2. 关掉Instant Run功能

这是AS3.1的已知bug,和Instant Run的代码热替换逻辑有关。操作步骤很简单:

  • Windows/Linux:打开File → Settings;Mac:Android Studio → Preferences
  • 找到Build, Execution, Deployment → Instant Run
  • 取消勾选「Enable Instant Run to hot swap code/resource changes on deploy」
    然后重新编译运行,大概率能解决问题。

3. 降级Gradle插件版本

AS3.1对应的gradle插件3.1.x确实存在不少输入相关的小bug,临时降级到更稳定的3.0.1版本也能绕过这个问题:
打开项目根目录的Project级build.gradle,修改buildscript里的依赖:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        // 其他依赖保持不变
    }
}

同步项目后重新构建即可。

4. 检查自定义EditText的InputConnection创建逻辑

如果你的项目里有自定义EditText,重写了onCreateInputConnection方法,要确保只对原始InputConnection做一次包装,不要多层嵌套Wrapper,否则也容易触发循环调用。比如:

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
    // 先获取系统原始的InputConnection
    InputConnection originalIC = super.onCreateInputConnection(outAttrs);
    // 只包装一次返回,避免多层嵌套
    return new MyCustomInputConnection(originalIC, true);
}

额外提醒:这个问题在Android Studio 3.2及后续版本已经被官方修复了,如果项目允许的话,直接升级到更高版本的AS和Gradle插件是一劳永逸的办法。

内容的提问来源于stack exchange,提问作者Kamer358

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:23:39