android – 当从保存的实例恢复片段时,如何防止editText从自动填充文本?

前端之家收集整理的这篇文章主要介绍了android – 当从保存的实例恢复片段时,如何防止editText从自动填充文本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个活动,持有并显示多个片段.

当我重新输入片段时,它会自动填充所有editTexts中的文本.所有字段的文本也相同.

例:

打开片段并在两个editTexts中填写文本:
CustomEditText1:[______]
CustomEditText2:[_ acb__]
CustomEditText3:[_ qwe__]

单击后退按钮并重新输入片段
CustomEditText1:[_ qwe__]
CustomEditText2:[_ qwe__]
CustomEditText3:[_ qwe__]

这是我在片段中覆盖的方法

  1. public AddBookingFragment() {
  2. // required empty public constructor
  3. }
  4.  
  5. @Override
  6. public void onAttach(Context context) {
  7. super.onAttach(context);
  8. tabsActivity = (TabsActivity) getActivity();
  9. }
  10.  
  11. @Override
  12. public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
  13. View view = inflater.inflate(R.layout.fragment_add_booking,container,false);
  14.  
  15. lastNameEditText = (NASEditText) view.findViewById(R.id.nas_add_booking_last_name);
  16. pnrEditText = (NASEditText) view.findViewById(R.id.nas_add_booking_pnr);
  17.  
  18. addButton = (NASButton) view.findViewById(R.id.nas_add_booking_add_button);
  19. scanButton = (NASButton) view.findViewById(R.id.nas_add_booking_scan_button);
  20.  
  21. confirmationBox = (LinearLayout) view.findViewById(R.id.nas_add_booking_confirmation_Box);
  22. confirmationText = (NASHeaderAndSubtext) view.findViewById(R.id.nas_add_booking_confirmation_text);
  23. confirmationBox.setVisibility(View.GONE);
  24.  
  25. bindButtons();
  26.  
  27. FontHelper.setFont(container,tabsActivity);
  28. return view;
  29. }

通过调试,我可以看到editText通过在覆盖的OnTextChanged内部的breakpointing来设置文本.

这是来自该断点的堆栈跟踪:

(NASEditText是我的自定义视图)

两个问题/问题:

>如何在片段恢复时阻止activity / fragment / editText填充字段中的文本?
>为什么要为所有字段填写相同的文本?

@R_403_323@

在朋友的帮助下发现问题!

在Android中的editTexts上,SaveEnabled默认为true.

解决方案只是设置:
setSaveEnabled(假);
在您的editText上.

这就是android为所有字段填充相同值的原因:
https://trickyandroid.com/saving-android-view-state-correctly/

事实证明,Android在同一层次结构中具有相同ID的视图恢复状态的方式并不是很明智(即使在具有不同ID的父视图中).此链接说明了如何使其正确执行.我只是将其关闭,因为我将状态保存在viewmodel对象中并从我的片段的onCreateView()中恢复它.

猜你在找的Android相关文章