我有导航抽屉和一系列碎片。在层次结构的最后一个片段,我在操作栏上有UP按钮。单击此按钮时,将调用root活动的onOptionsItemSelected(MenuItem项),我可以在其中找到,在以下谓词中单击了哪个按钮:
else if ( item.getItemId() == android.R.id.home )
{
System.out.println("android.R.id.home\n\n");
// super.onBackPressed();
// getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
return true;
}
如何删除当前片段?我已经阅读了关于后台堆栈的内容,但是这种方法需要使用密钥在堆栈中保存片段。我该如何避免这个程序?
答案 0 :(得分:1)
当我第一次开始使用它们时,我之前就有了这个问题。我使用此代码添加片段:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction =fragmentManager.beginTransaction();
Fragment fragment = new CustomFragment(); // your fragment to add
transaction.replace(R.id.content_frame, fragment,CustomFragment.TAG); // a string in case you need to check with fragment is currently visible.
transaction.addToBackStack(null);
transaction.commit();
这将确保当您按下后退按钮时,当前的按钮将消失,前一个按钮将显示。
希望它适合你。
答案 1 :(得分:0)
实际上,你可以弹出后台堆栈,不需要通过键/标签进行跟踪:FragmentManager.popBackStack()
。将片段添加到后台时只需使用null
,系统会自动为其选择一个标签。