在Android

时间:2015-06-08 02:32:01

标签: android

如何在Android中保存和恢复片段状态? 我的保存和恢复状态代码:

  @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=2时,linearLayout_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();
    }
}

有没有办法解决这个问题? 我不知道

1 个答案:

答案 0 :(得分:0)

添加onCreate方法null检查,现在用新片段替换已恢复的片段

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