private class MyAdapter extends FragmentStatePagerAdapter{ .......................省略............................. @Override public int getItemPosition(Object object) { return PagerAdapter.POSITION_NONE; } }
由于getItemPosition(xxx) {return PagerAdapter.POSITION_NONE;},所以当执行adapter.notifyDataSetChanged(),会执行destroyItem(xxx),在这个方法中会执行mSavedState.set(xxx),说明销毁fragment前会保存当前的FragmentInstanceState,销毁所有的fragment后,它会新建所需的fragment并在fragment.onresume()之前使用刚才保存的FragmentInstanceState,所以页面上的数据还是原来的。
那么只需要在fragment.onresume()设置界面,并设置一些监听,例如
public void onResume() { super.onResume(); mTitle.setText(mRecord.getTitle()); mDetail.setText(mRecord.getDetail()); mRecordSolved.setChecked(mRecord.isSolved()); mTitle.addTextChangedListener(mTitleTextWatcher); mDetail.addTextChangedListener(mDetailTextWatcher); mRecordSolved.setOnCheckedChangeListener(mSolvedOnCheckedChangeListener); }