[英]Save and restore fragment state
我有一系列的片段。 我使用“上一個”和“下一個”按鈕在這個片段中導航。 這個片段中有很多編輯文本和單選按鈕。
當通過單擊“上一個”按鈕加載上一個片段時,我想保存和恢復這些編輯文本和單選按鈕中的用戶輸入。
截圖:
片段 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;
}
}
在所有片段中使用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();
當您有一系列片段時,如果將它們添加到后台堆棧中,那將是內存浪費。 對於這種動作,android 提供了一種叫做 ViewPager 的東西,它總是一次存儲 2 個片段,並在需要時動態創建其余的片段。
因此,如果您仍然決定不想使用 ViewPager,您可以將 Fragment 的數據存儲在 Activity 的包中,並且您可以在再次創建 Fragment 時檢索數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.