如何解决Android中点击EditText触发的「!!! FAILED BINDER TRANSACTION !!!」错误?
Android EditText点击报错及无法获取输入内容问题解决
问题概述
开发Java Android应用时遇到两个核心问题:
- 点击输入URL的EditText时触发
DeadObjectException和FAILED BINDER TRANSACTION错误,输入法进程直接崩溃 - 无法获取EditText的输入内容,且
Log.v()无输出
错误日志
!!! FAILED BINDER TRANSACTION !!! (parcel size = 112) 2023-05-15 18:36:49.421 25271-25271 InputMetho...ionWrapper com.example.itube W IME died android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died at android.os.BinderProxy.transactNative(Native Method) at android.os.BinderProxy.transact(BinderProxy.java:571) at com.android.internal.view.IInputMethodSession$Stub$Proxy.viewClicked(IInputMethodSession.java:341) at android.view.inputmethod.InputMethodSessionWrapper.viewClicked(InputMethodSessionWrapper.java:119) at android.view.inputmethod.InputMethodManager.viewClicked(InputMethodManager.java:2284) at android.widget.TextView.viewClicked(TextView.java:13303) at android.widget.TextView.onTouchEvent(TextView.java:11212) at android.view.View.dispatchTouchEvent(View.java:14540)
相关代码
// get video url if (binding.url.getText() != null) { videoUrl = binding.url.getText().toString(); } // play button binding.playBtn.setOnClickListener(view -> { Log.v("url pre", videoUrl); // Intent toPlay = new Intent(getApplicationContext(), PlayActivity.class); // toPlay.putExtra("url", videoUrl); // startActivity(toPlay); });
解决步骤
1. 修复EditText内容获取逻辑
当前代码在初始化阶段就获取EditText内容,此时用户还未输入任何内容,导致videoUrl始终为初始空值。需将内容获取逻辑移至按钮点击事件内,确保每次点击都能拿到最新输入:
// play button binding.playBtn.setOnClickListener(view -> { // 点击时实时获取EditText最新内容 String videoUrl = ""; if (binding.url.getText() != null) { videoUrl = binding.url.getText().toString().trim(); } Log.v("url pre", videoUrl); // 恢复Intent跳转逻辑 Intent toPlay = new Intent(getApplicationContext(), PlayActivity.class); toPlay.putExtra("url", videoUrl); startActivity(toPlay); });
2. 解决EditText点击报错问题
该错误由输入法(IME)进程崩溃导致,可通过以下方式排查修复:
- 切换输入法:在系统设置中切换至系统默认输入法(如Google拼音),排除第三方输入法的适配问题
- 优化EditText属性:在布局文件中为EditText配置适合URL输入的属性,避免输入法适配异常:
<EditText android:id="@+id/url" android:inputType="textUri|textNoSuggestions" ... /> - 清理应用缓存:清除当前应用的缓存和数据,重启应用后再测试
3. 恢复Log.v()输出
检查Android Studio Logcat的配置项:
- 确认顶部进程选择为当前应用(
com.example.itube) - 将日志级别切换为
Verbose(V) - 可在搜索框输入
url pre过滤指定标签的日志,快速定位输出
内容的提问来源于stack exchange,提问作者Wonster
相关产品推荐
相关产品推荐

