3

回国回来后叫我MainActivityFragment从那里我开始DetailActivity与下面的代码:onCreateView从第二活动

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

+0

有没有人想帮忙? –

+0

我很好奇,你怎么知道这是调用onCreate而不是使用savedinstance? –

+0

我知道,因为每当我返回时,应用程序都会从​​Web API加载数据,而不是使用已存储在捆绑包中的已获取数据。我也可以在调试过程中看到这种行为。 –

回答

0

我已经想通了。我通过xml布局文件加载MainActivity。我改变了这一点,并包括以下代码到我的MainActivity,并在问题消失后:

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