簡體   English   中英

在Android中保存和還原片段狀態

[英]Saving and Restoring Fragment state in Android

如何在Android中保存和還原Fragment狀態? 我的代碼用於保存和恢復狀態:

  @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("CurrentState",CurrentState);
    }


public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        if (savedInstanceState != null) {
            // Restore last state for checked position.
            CurrentState = savedInstanceState.getInt("CurrentState", 0);
        }
        .
         .
        .
        switch (CurrentState){
            case 1 :button_DisplayMemoris.performClick();break;
            case 2 :
                linearLayout_AddMemoris.setVisibility(View.VISIBLE);
                linearLayout_Memoris.setVisibility(View.GONE);
                linearLayout_DisplayMemoris.setVisibility(View.GONE);
                break;
            default:break;
        }
        return inflate;
    }

CurrentState=2linearLayout_AddMemoris不顯示

我如何解決它?

更新:

這是我的活動:

public class ToolsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tools);
        displayView();
    }
    public void displayView() {
        // update the main content by replacing fragments
        Fragment fragment = = new MemoirsFragment();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.replace(R.id.frame_container, fragment);
            ft.commit();
    }
}

有辦法解決問題嗎? 我不知道

加入onCreate方法的空檢查,現在您將恢復的片段替換為新的片段

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tools);
    if (savedInstanceState == null)
        displayView();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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