0

Android の Master Detail Template の Up Navigation を理解するのに問題があります。シングル ペイン モード (スマートフォン用) では、ItemListActivity と ItemListFragment を使用します。ListFragment 内のアイテムがクリックされると、ItemDetailFragment が呼び出されます。この ItemDetailFragment にいる場合、ActionBar の Up Navigation をクリックして ItemListFragment に戻りたいと思います。

私はそれを次のように理解しています: ItemDetailFragment を ItemListFragment に置き換えるだけですか?

私の ItemDetailFragment では、次のコードを使用します。

//OnClick auf ActionBar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home: 
          FragmentTransaction trans = getFragmentManager().beginTransaction();
          trans.replace(R.id.fragment_container, new ItemListFragment()); 
          trans.commit();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

しかし、ItemListFragment は DetailFragment が呼び出される前の状態ではありません。以前と同じリストが欲しいです。

戻るボタンをクリックすると正しいアクションが実行されるので、アップ ナビゲーションに戻るボタンを実装するだけでよいでしょうか?

4

2 に答える 2

2

現在のアプローチでは、ItemListFragment の新しいインスタンスを作成するため、リストの状態を保存する場合は、自分で行う必要があります。単に戻る必要がある場合はonBackPressed()、ホームボタンのメソッドを呼び出すことをお勧めします。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home: 
          this.onBackPressed();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
于 2013-11-12T16:07:46.540 に答える
1

上記の説明で理解できる限り..

1)Listfragmentアイテムで..をクリックすると、ItemdetailFragmentに移動するため、ListFragmentにBackStack操作を追加する必要があります。すなわち、次のように

transaction.addToBackStack(String);//to identify you can give any name 
transaction.commit();  //then commit the transaction

2) ItemdetailFragment から ListFragment に移動する場合は、呼び出す必要がある戻るボタンで戻るボタンを使用しています。

popBackStack("towhich screen you want to move",0) //for more information 参照する

于 2013-11-13T09:45:20.547 に答える