我有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();
}

10-05 23:19