android - 使用后退按钮在 fragment 之间切换

标签 android android-fragments

好的,我有一个主要 fragment 的 Activity ,上面有一个菜单。当用户单击菜单项时,另一个 fragment 将动画化到屏幕中,代码如下:

FragmentTransaction ft = getFragmentManager().beginTransaction();

ft.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out);
ft.hide(getFragmentManager().findFragmentByTag("menu_fragment"));

Fragment opisFragment = getFragmentManager().findFragmentByTag("opis_fragment");
if (opisFragment == null) {
    opisFragment = new OpisFragment();
    ft.add(R.id.p_container, opisFragment, "opis_fragment");
    ft.commit();
} else {
    ft.show(opisFragment);
}

注意:pr_fragment是当前fragment的标签,也就是有菜单的那个。

现在,这很好用,但是当我在第二个 fragment 上时,我想添加功能,当用户单击后退按钮时,它将显示第一个 fragment 。使用此代码,当我单击后退时,它会一起退出 Activity 。 感谢您的帮助!

最佳答案

您只需使用 addToBackStack(String name) FragmentTransaction

// Showing menu fragment also added in backstack
FragmentTransaction ft = getFragmentManager().beginTransaction();

ft.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
  .add(R.id.p_container, menuFragment, "menu_fragment")
  .addToBackStack("menu_fragment")
  .commit();


// Showing opis fragment also added in backstack
FragmentTransaction ft2 = getFragmentManager().beginTransaction();

ft2.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
      .add(R.id.p_container, opisFragment, "opis_fragment")
      .addToBackStack("opis_fragment")
      .commit();

假设“opis fragment”在前台,当您按下后退按钮时,“menu_fragment”将显示回前台,再次按下后退按钮将退出 Activity 。

关于android - 使用后退按钮在 fragment 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601674/

相关文章:

java - Android:Viewpager OnPageChangeListener onpageselected 干扰幻灯片动画

java - 使用抽屉导航时尝试从空对象引用的字段 'int android.support.v4.app.Fragment.mContainerId' 读取

android - 连接到 Android 上的 Outlook 日历

java - 制作动画叠加 View

android - fragment 中的 findViewById

java - 新错误 java.lang.IllegalStateException : Can not perform this action after onSaveInstanceState

java - 改造图片上传返回错误请求400

android - 如何在android中自定义Header

java - 如何舍入 Double 数据类型值

android - 尝试 commitAllowingStateLoss 时出现 FragmentManager NullPointerException