我有mainActivityFragment,在这里我用下面的代码启动detailActivity:
private final CurrencyListAdapter.ClickListener itemClickListener
= new CurrencyListAdapter.ClickListener() {
@Override
public void onItemClick(int position, View v) {
Intent intent = new Intent(getActivity(), DetailActivity.class);
String code = mCurrencyList.get(position).getCode();
intent.putExtra(Constants.SELECTED_CODE_KEY, code);
startActivity(intent);
}
};
之后,从我的detailactivity开始我的detailactivityfragment,代码如下:
if (savedInstanceState == null) {
DetailActivityFragment fragment = DetailActivityFragment.getInstance(code);
getSupportFragmentManager()
.beginTransaction()
.add(R.id.detail_container, fragment)
.commit();
}
此外,我还在mainActivityFragment中保留实例状态。但是,当从detailactivityfragment中单击back按钮时,将调用mainactivityfragment的oncreateview方法,并且我无法还原实例状态,因为saveinstancestate方法未执行,因此savedinstancestate为空。
我很好奇为什么会这样。这种情况在其他项目中不会发生,但逻辑是一样的。如果有人能帮助我,我将非常感激。
最佳答案
我已经想好了。我正在通过XML布局文件加载mainActivity。我更改了此设置,并将以下代码包含到我的主活动中,并且在问题消失后:
if (savedInstanceState == null) {
MainActivityFragment fragment = new MainActivityFragment();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.main_container, fragment)
.commit();
}