我将片段用于我的应用程序,它们是:片段A,片段B和片段C。
从一个片段移动到另一个片段,我使用两个按钮,第一个按钮用于转发到下一个片段,第二个按钮用于返回上一个片段。
当我从一个片段移动到另一个片段(例如从A到B再到A再到B)时的问题。 Fragment B
的EditText中的所有条目都将丢失并返回空白。这是片段A:
public class AFragment extends Fragment {
EditText text,text2;
public AFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_a, container, false);
ImageView next=(ImageView)rootView.findViewById(R.id.next);
text=(EditText)rootView.findViewById(R.id.text);
text2=(EditText)rootView.findViewById(R.id.text1);
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
getFragmentManager().beginTransaction().replace(R.id.frame_container, new TertanggungPolis()).addToBackStack("" + new BFragment().getId()).commit();
}
});
return rootView;
}
我已经创建了保存方法onSaveInstanceState
但是当我再次从ABAB进行片段事务时,我的片段B没有任何变化,fragment B
只是创建了新视图,并且在我回到{之前输入的所有editext缺少{1}},这是我的片段B:
fragment A
请帮助我,因此我感到非常沮丧和压力。我希望有人能帮助我解决我的问题,非常感谢你
答案 0 :(得分:0)
您必须像现在一样将状态保存到方法onSaveInstanceState()
中的Bundle
(添加@Override
注释,因为您要覆盖现有方法)。您需要在onActivityCreated()
方法中恢复状态。从Bundle
加载值并将它们设置为EditText字段。
添加如下内容:
@Override
public void onActivityCreated(Bundle bundle) {
super.onActivityCreated(bundle);
if(bundle != null){
//state can be restored
//load values and set them to your view elements
String loaded = bundle.getString("text 1");
cut.setText(loaded);
} else {
//The fragment is created the first time and no state was saved before
}
}
您还可以阅读life-cycle of Fragments。