最近開發平闆上的項目比較多,使用Fragment的頻率也增加了,不可避免的在fragment 中使用到了EditText,在使用過程中出現了這樣一種情況,
第一次add Fragment時,給EditText指派後"value1",popBackStack()後,重新add 這個Fragment,并且給EditText指派為“value2”,可是不可思議的事情發生了,頁面上顯示EditText仍然為“value1”,代碼示例:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i(TAG, "****>>>> onCreateView");
view = inflater.inflate(R.layout.fragment_patrol_task_detail, container, false);
String value = getArguments().getString("Value");
mEditText.setText(value);
return view;
}
在onCreateView中為EditText指派,仿佛EditText有了記憶性,其實這時因為對Fragment的生命周期了解不透徹導緻的問題:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i(TAG, "****>>>> onCreateView");
view = inflater.inflate(R.layout.fragment_patrol_task_detail, container, false);
return view;
}
@Override
public void onResume() {
super.onResume();
Log.i("PatrolTaskDetail", "****>>>> onResume");
String value = getArguments().getString("Value");
mEditText.setText(value);
initView();
}
改為在onResume中對EditText指派就可以解決了。