3

を返した後、私はコードの下でDetailActivityを開始するところからMainActivityFragmentを持っていると呼ばれている。その後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(); 
}