fragment中的数据缓存

具体细节参考:http://www.jianshu.com/p/015c79bedb41


1,在切换fragment之前setArguments


       PollingAllListFragment pollingAllListFragment = new PollingAllListFragment();
        pollingAllListFragment.setArguments(new Bundle());  // 保证在fragment里面调用 getArguments()方法不为空
        fragmentList.add(pollingAllListFragment);


2,在fragment里面在onSaveInstanceState()方法和onDestroyView()方法添加要缓存的数据

      在onViewCreated里面取出数据


 @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.setContext(getContext());
        super.onViewCreated(view, savedInstanceState);
        ButterKnife.bind(this, view);
        EventBus.getDefault().unregister(this);
        EventBus.getDefault().register(this);


       // 初始化的时候取出临时数据
        Bundle arguments = getArguments();
        if (arguments!=null){
            Bundle saveState = arguments.getBundle("saveState");
            if (saveState != null){
                index = saveState.getInt("index",1);
                LogUtil.e("eeeeee",index+"");
            }
        }
  }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        // 保存临时数据
        saveStateToArgumnets();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        ButterKnife.unbind(this);
        // 保存临时数据
        saveStateToArgumnets();
    }


  private void saveStateToArgumnets() {
        Bundle bundle = new Bundle();
        bundle.putInt("index",index);


        Bundle arguments = getArguments();
        arguments.putBundle("saveState",bundle);
    }



你可能感兴趣的:(android)