我有一个包含微调器的片段,我需要在两个活动中重复使用该片段,以便微调器的选择状态持续存在。
我已使用this SO answer中的建议以下列方式实施saveFragmentInstanceState()
和setInitialSavedState()
:
saveFragmentInstanceState()
setInitialSavedState()
...但是这不会发生,因为在活动B中,不会记住所选的微调器值。
我的代码如下。任何人都可以看到问题可能是什么?或者我没有使用正确的方法?
SpinnerFragment - 选择微调项目时执行的代码...
Intent activityBIntent = new Intent(getActivity(), ActivityB.class);
android.app.FragmentManager fm = getActivity().getFragmentManager();
SavedState spinnerFragmentState = fm.saveFragmentInstanceState(SpinnerFragment.this);
activityBIntent.putExtra(ActivityB.FRAGMENT_STATE_KEY, spinnerFragmentState);
startActivity(activityBIntent);
活动B - 在onCreate()...
中执行的代码 setContentView(R.layout.activity_b);
/*
* Create fragmentContainer
*/
SpinnerFragment spinnerFragment = new SpinnerFragment();
SavedState spinnerFragmentState = getIntent().getParcelableExtra(FRAGMENT_STATE_KEY);
Log.d(LOG_TAG, "spinnerFragmentState: " + spinnerFragmentState); //this isn't null
spinnerFragment.setInitialSavedState(spinnerFragmentState);
/*
* Add spinnerFragmentContainer to layout
*/
android.app.FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.spinnerFragmentContainer, spinnerFragment);
fragmentTransaction.commit();
PS - 与这个问题不同,我在这个主题上发现的其他问题/答案并不是指不同活动之间持久的片段状态。