最后我找到了解决方法。出现此错误是因为系统自动填充正在尝试超越您的谷歌自动填充实现。
因此,首先我们必须禁用 Android 操作系统尝试自动填充输入字段并禁用我们应用程序的自动填充功能。
为了禁用自动填充我做了两件事..
我尝试通过以下 xml 属性禁用系统自动填充,但根本不起作用。
android:importantForAutofill="否"
这根本不起作用..然后我找到了以下答案。建议实现自定义 EditText (或任何输入类型)并禁用源中的自动填充尝试。实现您自己的 EdiText 版本,如下所示。
public class EditTextWithNoAutoFill extends androidx.appcompat.widget.AppCompatEditText {
public EditTextWithNoAutoFill(@NonNull Context context) {
super(context);
}
public EditTextWithNoAutoFill(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public EditTextWithNoAutoFill(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public int getAutofillType() {
return View.AUTOFILL_TYPE_NONE;
}
@Override
public int getImportantForAutofill() {
return IMPORTANT_FOR_AUTOFILL_NO;
}
}
}
Fixe 在于这两个方法实现 'getImportantForAutofill()' & 'getAutofillType()'
然后我也应用了这个..
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
getWindow().getDecorView().setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
}
应用这两个更改并运行它后,并没有立即解决我的问题..我必须重新启动正在运行的设备/清理构建缓存/重新启动 android studio(不确定哪个选项触发了修复)
经过上述更改后,一切正常。
有关禁用操作系统“自动填充”的更多参考,我将此参考保留为原始答案
https://stackoverflow.com/a/46698028/9901309