应用 Viewpager 四个标签 片段 。第二个片段有framelayout" FL"我把片段放在listview的地方。当用户点击listview项目时,在此framelayout中打开带有listview的新片段" FL"等等。
我将使用多级别类别的prudact来执行 目录 。
我的意见:当我打开片段级别3时,如何在第二个片段中实现,而不是单击 工具栏主页按钮 返回到片段级别2和另一个单击返回到片段级别1(popBackStack),最后当单击 工具栏主页按钮 时,转到 第一个选项卡 即可。任何帮助对我都有用。感谢
我有什么成功:
我使用主页按钮从其他标签中转到 第一个标签 :
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.setCurrentItem(0, true);
}
});
答案 0 :(得分:1)
要替换片段,请使用以下代码
@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 onCreateView
中添加以下行 setHasOptionsMenu(true);
使用以下代码返回上一个片段。
@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();
}
}