应用有 Viewpager,它有 四个标签 和 fragment 。第二个 fragment 具有框架布局“FL”,我将 fragment 与 ListView 放在一起。当用户单击 ListView 项目时,在此框架布局“FL”中使用 ListView 打开新 fragment ,依此类推。
我将使用具有多级类别的 prudacts 做目录。
我的问题:当我打开第 3 级 fragment 时,我如何在第二个 fragment 中实现它,而不是通过单击工具栏主页按钮返回 fragment 级别 2 和另一个单击返回 fragment 级别 1 (popBackStack),最后当单击工具栏主页按钮时转到第一个选项卡 强>。任何帮助对我有用。谢谢
这是我的收获:
我使用主页按钮从其他选项卡转到第一个选项卡:
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.setCurrentItem(0, true);
}
});
最佳答案
使用下面的代码替换 fragment
@Override
public void replaceFragment(Fragment fragment, String title) {
String backStateName = fragment.getClass().getName();
FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
if (!fragmentPopped) { //fragment not in back stack, create it.
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.container_body, fragment);
ft.addToBackStack(backStateName);
ft.commit();
// getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setTitle("");
}
}
在 fragment 类中添加下面提到的代码
在您的 Fragment onCreateView 中添加以下行
setHasOptionsMenu(true);
使用下面的代码返回上一个 fragment 。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getActivity().getSupportFragmentManager().getBackStackEntryCount() > 1) {
getFragmentManager().popBackStack();
return true;
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onDetach() {
super.onDetach();
if (getActivity().getSupportFragmentManager().getBackStackEntryCount() > 1) {
getFragmentManager().popBackStack();
}
}
关于android - 将工具栏主页按钮用于 popBackStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36442677/