3

我有 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 中单击返回按钮时,调用了 MainActivityFragment 的 onCreateView 方法,并且我无法恢复实例状态,因为未执行 saveInstanceState 方法,因此 savedInstanceState 为空。我很好奇为什么会这样。这在其他具有相同逻辑的项目中不会发生。如果有人能帮助我,我将不胜感激。

4

1 回答 1

0

我已经想通了。我正在通过 xml 布局文件加载 MainActivity。我对此进行了更改,并将以下代码包含在我的 MainActivity 中,并且在问题消失后:

if (savedInstanceState == null) {
    MainActivityFragment fragment = new MainActivityFragment();
        getSupportFragmentManager()
        .beginTransaction()
        .add(R.id.main_container, fragment)
        .commit();
}
于 2016-04-27T05:45:10.610 回答