由于项目需要,Activity加载多个fragment,一次只加载一个,即需要的add,不需要的remove。
遇到的问题,fragment在来回加载中发现已经加在过的fragment中的EditText具有记忆性展示原来的数据,导致特定的fragment中的EditText刷新不了数据。
随后查了下:
onViewStateRestored
告知fragment 其视图层次的所有保存的状态都已经恢复了
当fragment已存在时,重新加载会执行onViewStateRestored把原有的控件数据重新赋值回来。
从fragment的生命周期来看onViewStateRestored在OncreateView后面执行,所以onCreateView里面的Editext赋值被 onViewStateRestored中的赋值覆盖掉了。所以刷新不了EdiText。
解决方法在onViewStateRestored方法中给EditText值
@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) { //fragment中的editext有记忆功能
super.onViewStateRestored(savedInstanceState);
initValue();
}