我在理解Android中主详细信息模板中的向上导航时遇到问题。在单窗格模式下(对于智能手机),我使用ItemListActivity和ItemListFragment。如果单击ListFragment中的项,则调用ItemDetailFragment。现在,如果我在这个ItemDetailFragment中,我想通过单击ActionBar中的向上导航返回到ItemListFragment。
我理解为这样:我只需要用ItemListFragment替换我的ItemDetailFragment,或者?
在我的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之前的状态。我想拥有和以前一样的名单。
如果单击后退按钮,则表示操作正确,那么我应该在向上导航中实现后退点击吗?
答案 0 :(得分: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);
}
答案 1 :(得分: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
referthis