簡體   English   中英

保存和恢復片段狀態

[英]Save and restore fragment state

我有一系列的片段。 我使用“上一個”和“下一個”按鈕在這個片段中導航。 這個片段中有很多編輯文本和單選按鈕。

當通過單擊“上一個”按鈕加載上一個片段時,我想保存和恢復這些編輯文本和單選按鈕中的用戶輸入。

截圖:
片段 1

片段 2

片段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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM