3

以下のコードで DetailActivity を開始するところから MainActivityFragment があります。

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 であるため、インスタンスの状態を復元できません。なぜこれが起こるのか、私は非常に興味があります。これは、同じロジックを持つ他のプロジェクトでは発生していません。誰かが私を助けてくれたら、とても感謝します。

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 に答える