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(); 
} 
相關問題