我有一系列片段。我使用"之前的#34;和" next"在这个片段中导航的按钮。这些片段中有许多编辑文本和单选按钮。
我希望通过点击"之前的"加载前一个片段,保存并恢复这些编辑文本和单选按钮中的用户输入。按钮。
Screeshots:
Fragment 1
片段1:
public class Register_Page6 extends Fragment {
public Register_Page6() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_register_page6, container, false);
Button Previous = (Button) view.findViewById(R.id.Previous6);
Button Next = (Button) view.findViewById(R.id.Next6);
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
android.support.v4.app.FragmentTransaction FT;
FT = getActivity().getSupportFragmentManager().beginTransaction();
FT.replace(R.id.main_container,new Register_Page7());
FT.commit();
}
});
Previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
android.support.v4.app.FragmentTransaction FT;
FT = getActivity().getSupportFragmentManager().beginTransaction();
FT.replace(R.id.main_container,new Register_Page5());
FT.commit();
}
});
return view;
}
}
片段2:
public class Register_Page7 extends Fragment {
public Register_Page7(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_register_page7, container, false);
Button Previous = (Button) view.findViewById(R.id.Previous7);
Button Regiter = (Button) view.findViewById(R.id.Submit);
Regiter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
android.support.v4.app.FragmentTransaction FT;
FT = getActivity().getSupportFragmentManager().beginTransaction();
FT.replace(R.id.main_container,new Register_Page6());
FT.commit();
}
});
Previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
android.support.v4.app.FragmentTransaction FT;
FT = getActivity().getSupportFragmentManager().beginTransaction();
FT.replace(R.id.main_container,new Register_Page6());
FT.commit();
}
});
return view;
}
}
答案 0 :(得分:2)
在您的所有片段中使用addToBackStack("YOUTAG")
将您的片段添加到后台堆栈:
android.support.v4.app.FragmentTransaction FT;
FT = getActivity().getSupportFragmentManager().beginTransaction();
FT.replace(R.id.main_container, new Register_Page6()).addToBackStack("FragmentName");
FT.commit();
答案 1 :(得分:0)
如果你有一系列片段,如果你将它们添加到backstack,那将是内存浪费。 对于这种动作,android提供了一个名为ViewPager的东西,它总是一次存储2个片段,并在需要时动态创建剩余的片段。
因此,如果您仍然决定不想使用ViewPager,则可以将Fragment的数据存储在activity的包中,并且可以在再次创建片段时检索数据