从第二个活动返回后调用onCreateView

时间:2016-04-23 20:09:49

标签: android android-activity fragment fragment-lifecycle onrestoreinstancestate

我有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为null。 我很好奇为什么会这样。在具有相同逻辑的其他项目中不会发生这种情况。如果有人能帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。我正在通过xml布局文件加载MainActivity。我改变了这一点,并将以下代码包含在我的MainActivity中,并在问题消失后:

if (savedInstanceState == null) {
    MainActivityFragment fragment = new MainActivityFragment();
        getSupportFragmentManager()
        .beginTransaction()
        .add(R.id.main_container, fragment)
        .commit();
}