返回上一个片段无法正常工作

2024-01-03

我正在使用导航抽屉,当我选择一个项目时,它会正确地将前一个片段替换为我选择的片段,但是如果我打开另一个片段,然后单击后退按钮,它将转到上一个活动而不是上一个活动片段,这样做有什么问题吗?

private void selectItem(int position) {
    Fragment newFragment;
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    switch (position){
        case 0:
            //Update
            newFragment = new UpdateFragment();
            transaction.replace(R.id.content_frame, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            listView.setItemChecked(position, true);
            setTitle(navigationDrawerItems[position]);
            break;
        case 1:
            //Maps
            newFragment = new TimetableFragment();
            transaction.replace(R.id.content_frame, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            listView.setItemChecked(position, true);
            setTitle(navigationDrawerItems[position]);
            break;
        case 2:
            //Timetables
            newFragment = new TimetableFragment();
            transaction.replace(R.id.content_frame, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            listView.setItemChecked(position, true);
            setTitle(navigationDrawerItems[position]);
            break;
        case 3:
            //Notes
            newFragment = new TimetableFragment();
            transaction.replace(R.id.content_frame, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            listView.setItemChecked(position, true);
            setTitle(navigationDrawerItems[position]);
            break;
        case 4:
            //About
            newFragment = new AboutFragment();
            transaction.replace(R.id.content_frame, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            listView.setItemChecked(position, true);
            setTitle(navigationDrawerItems[position]);
            break;
        case 5:
            //Settings
            newFragment = new SettingsFragment();
            transaction.replace(R.id.content_frame, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            listView.setItemChecked(position, true);
            setTitle(navigationDrawerItems[position]);
            break;
    }
    //listView.setItemChecked(position, true);
    //setTitle(navigationDrawerItems[position]);
    drawerLayout.closeDrawer(listView);
}

您可以使用getFragmentManager().popBackStack()中的方法onBackPressed:

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0) {
         getFragmentManager().popBackStack();
         getFragmentManager().beginTransaction().commit();
    }
    else {
        super.onBackPressed();
    }
}

不要忘记在 BackStack 中添加片段,例如:

transaction.addToBackStack(null);

Edit :

要在操作栏中显示当前片段名称,您可以获取它onResume您的 FragmentActivity 的:

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

    FragmentManager fragManager = this.getSupportFragmentManager();
    int count = this.getSupportFragmentManager().getBackStackEntryCount();

    // Fetch last fragment
    Fragment fragment = fragManager.getFragments().get(count>0?count-1:count);

    // Check with your possible Fragment class
    if( fragment instanceof OneFragment)
    {
        setTitle("OneFragment");
    }
    else if(fragment instanceof TwoFragment)
    {
        setTitle("TwoFragment");
    }
}

希望有帮助ツ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回上一个片段无法正常工作 的相关文章

  • 在webview android上显示网页的一部分

    我想制作一个将网页内容加载到 webview 中的应用程序 我只想显示整个网页视图中的特定内容 而不是网页的全部内容 这是一个例子 如果我使用 作为 webview 的 URL 它会加载 webview 上页面的所有内容 但我想删除页面的横
  • Android API版本兼容性

    我希望我的应用程序能够在 Android 版本 2 1 和 2 2 上运行 在我的应用程序的一个区域中 有一个肖像式相机 生成肖像相机预览的过程在两个操作系统版本上是不同的 据我所知 具体方法如下 2 1 Camera Parameters
  • 以编程方式为从 XML 创建的现有菜单创建子菜单

    我已经在 xml 中创建了父菜单 现在我不知道如何使用代码在这些父菜单下创建子菜单 这意味着 父菜单在 menu xml 中进行编码 子菜单将在数据可用时基于动态代码加载 当我尝试使用 menu addSubMenu 时 它正在创建一个新的
  • CustomWebViewRenderer DownloadManager 与 CopyBackForwardList 的问题

    我仍在学习 android 我正在使用它创建一个混合应用程序推荐 https stackoverflow com questions 58967929 xamarin webview webpage cant download files
  • 如何在 Android 应用程序中实现 Rate It 功能

    我正在开发一个 Android 应用程序 一切正常 我的应用程序已准备好启动 但我还需要实现一项功能 我需要显示一个包含以下内容的弹出窗口 Rate It and Remind me later 在这里 如果任何用户在市场上对应用程序进行评
  • Android 全屏对话框片段(如日历应用程序)

    我正在尝试实现如下图所示的全屏对话框 我能够显示全屏对话框 但是当显示对话框时 状态栏颜色变为黑色并且不保留原色深色 这是我的对话片段 public class IconsDialogFragment extends DialogFragm
  • 从 Bitmap 类创建 .bmp 图像文件

    我创建了一个使用套接字的应用程序 客户端在其中接收图像并将图像数据存储在 Bitmap 类中 谁能告诉我如何创建一个名为我的图像 png or 我的图像 bmp来自此 Bitmap 对象 String base64Code dataInpu
  • AlertDialog setButton 已弃用

    我在我的 Eclipse Android 项目中使用此代码 alertDialog setButton OK new DialogInterface OnClickListener Override public void onClick
  • Android:当一个服务被杀死时,我们如何保存服务状态以供以后恢复?

    我们创建了一个应用程序 本质上是一个计时器 秒表 具有一些精心设计的功能 我们定义了一个服务 用于计时并提醒订阅某些计时器事件的侦听器 活动等 我们希望能够在 Android 终止我们的服务 用于内存回收 时保存计时器 秒表的状态 经过的秒
  • addToBackStack 之后的 popBackStack() 不起作用

    我的项目包含两个片段 FragmentA 应用启动时默认加载的fragment FragmentB 替换fragmentA当单击按钮完成时 这是我的主视图的 XML
  • Android 4.3 的 Google 地图 Android API V2 问题

    我是谷歌地图的新手 刚刚点击此链接http www androidhive info 2013 08 android working with google maps v2 http www androidhive info 2013 08
  • 何时取消订阅

    我有一个关于如何取消订阅可观察的问题 我有两个代码 但我不确定哪一个更好 示例 1 gt 流结束后取消订阅订阅者 Subscriber
  • 从 Android 模拟器使用 WebView WebGL

    据我了解 WebGL 仅在 Android Lollipop 中的 WebView 更新 Play 商店中的 WebView 组件 和较新版本 无需 Play 商店更新 中受支持 但是 我有一个使用 Android 7 1 1 的模拟器 并
  • NDK 应用 onDestroy 清理 - 如何 DetachCurrentThread

    因此 如果我们连接 我们必须在完成后分离线程 对吗 JNIEnv get jni env JNIEnv res JAVA VM gt GetEnv void res JNI VERSION 1 6 Using cached JavaVM J
  • Firebird 和 Android JDBC 驱动程序

    火鸟有问题 我从未与 DB 合作过 服务器 firebird 1 5 上的数据库 添加库 firebird full 2 2 4到 libs 文件夹 将其添加到 Gradle implementation fileTree libs 将其添
  • 使用远程数据编写 Android、iPad、iPhone 客户端的技术

    我需要探索世界 你写了一个杀手级应用程序 但你有 Android iPhone iPad 客户端吗 我的问题是 1 向这些设备发送数据的最佳方式是什么 按照建议进行肥皂和休息here https stackoverflow com ques
  • Xamarin.Forms 用相机拍照显示方向错误并且后退按钮崩溃

    我正在使用此处的 Xamarin Forms Camera 示例 https github com XForms Xamarin Forms Labs Samples tree master XF Labs CameraSample htt
  • 使用 Nexus 10 在 Android 4.3 上滚动时性能不佳

    我的应用程序有一个带有一些滚动的列表视图 在我测试过的所有手机 Nexus One Nexus 4 和 Galaxy S3 4 上都表现得非常好 以 60fps 滚动 但 Nexus 10 上的表现很糟糕 大概在 15fps 左右 我已经将
  • Android 中的垂直(旋转)标签

    我需要两种在 Android 中显示垂直标签的方法 水平标签逆时针旋转 90 度 字母在侧面 带有字母的水平标签 如商店招牌 我是否需要为这两种情况 一种情况 开发自定义小部件 我可以使 TextView 以这种方式呈现吗 如果我需要完全自
  • 如何隐藏或删除 Android HoneyComb 中的状态栏?

    如何隐藏或删除 Android HoneyComb 中的状态栏 每次运行应用程序时 我都会发现某些内容必须被状态栏覆盖 我尝试改变AndroidManifest xml 但没有任何改变 你不知道 它被认为是永久的屏幕装饰 就像电容式主页 菜

随机推荐

  • (VB6) 逐行读取文本文件查找特定单词

    下午好 StackOverflow 我刚刚在这里注册 我已经使用这个网站很多年了 它似乎总是提供答案的网站 所以我决定参与其中 废话不多说 这是我的问题 我正在为 LAN 各方编写一个 API 我和一个团队每月都会使用该 API 来帮助解决
  • 了解汇编级别 ++i 和 i++ 之间的区别

    我知道这个问题的变体已经在这里被问过多次 但我并不是在问两者之间有什么区别 只是想要一些帮助来理解这两种形式背后的组装 我认为我的问题与whys比到what的差异 我正在阅读Prata 的 C Primer Plus在处理增量运算符的部分
  • C++ select() 不等待超时时间

    我正在尝试使用 select 函数来接受输入 但如果用户没有输入任何内容 则每 2 秒执行一次其他操作 下面的代码在第一次到达 select 时等待两秒 但是一旦打印出第一个 超时 消息 它就会快速继续打印 超时 而不等待 2 秒 基本上进
  • Celery 任务在多个队列中注册

    我在 Django 1 9 中使用 celery 和 RabbitMQ 服务器 我有四个不同的队列 我正在这四个队列之一中注册一个任务 问题是我的所有任务都注册在所有四个队列中 就像我有一个名为add并有四个队列 A B C 和 D 理想情
  • 根据C++模板类型调用不同的C函数

    我的问题如下 我有一个 C 库 其中包含每个函数的多个版本 具体取决于它们所使用的数据类型 例如 void add double a double b double c and void sadd float a float b float
  • 如何设置 QComboBox 宽度以适合最大的项目?

    我有一个QComboBox我充满了QString using comboBox gt addItem someString 当我启动 GUI 应用程序时 QComboBox始终为 70 即使最小的项目要大得多 如何动态设置a的宽度QComb
  • 当我浏览 http://localhost:8004/elmah.axd 时,它会生成 404 错误

    当我浏览时http localhost 8004 elmah axd它显示应用程序中发生的错误 但也会生成 404 错误 我该如何停止这个 404 错误 404错误的详细信息是 System Web HttpException 0x8000
  • Visual Studio 2010 条件引用

    我们这里有多个产品共享一些公共库 这些库是单独解决方案的一部分 因此它们可以由TFS独立构建 但问题是在开发过程中 必须修改公共库 将其编译为二进制文件 将其复制到公共位置 编译产品解决方案 为了避免这种情况 我想知道是否可以有条件引用 因
  • 查看控制器 EXTJS 4 中的参考

    我无法在控制器中获取组合框值 组合框视图的getter方法返回 function i return this constructor apply this arguments null 而不是查看对象实例 如果我使用 var combo t
  • 未找到 QWebView 库

    当我尝试添加QWebFrame 库 我找不到它 并且答复是没有这样的文件或目录 所以知道为什么这个库不存在 我按如下方式添加库 include
  • 在 Curses 模式下,stdout 和 stderr 去哪里?

    当curses处于活动状态时 stdout和stderr去哪里 import curses sys def test streams print stdout print gt gt sys stderr stderr def curses
  • ReactJS/Express Axios POST 返回 404,来自 Postman

    我不知道我在这里做错了什么 POST 方法适用于 Postman 但不适用于 React 前端 users js api users login route POST api users login desc Login user Retu
  • 如何在不知道c中大小的情况下迭代数组[重复]

    这个问题在这里已经有答案了 我有一个指向 C 中数组的指针 我想对其进行迭代 但我不知道其大小 int array 我不确定应该如何进行 我想我应该尝试通过以下方式找到尺寸 int array size sizeof array sizeo
  • 在javascript中从剪贴板抓取部分数据

    我复制了一个大约一百万行的 Excel 表格 当我查看系统上的剪贴板时 它似乎包含大约 250MB 的数据 但是 我only需要从中获取样式信息 例如 整个数据的大小 远 不到 1MB 有没有办法像读取文件或流一样读取剪贴板 以便我可以执行
  • 时髦的 jQuery mouseleave 行为

    我有一个类似菜单的下拉容器 通过绑定 mouseleave 事件来隐藏 div div
  • 如何获取变换/旋转的 SVG 路径点

    我通过设置属性 transform rotate 45 旋转了 SVG 路径元素 现在我如何获得旋转的 SVG 路径点 当我检查属性 d 时 它仍然显示原始点 未旋转 如果您通过 path getPointAtLength 获得点 则需要将
  • 寻找包装在用户定义的 SQL 函数中包装的外部 SQL 存储过程中的任何 OS/400 API 的工作示例

    目前有两个问题 1 下面的示例使用外部 SQL 存储过程包装 OS 400 API 该存储过程是 SQL 用户定义的表函数中的进一步包装器 编译和运行都没有错误 但当传递 作为作业名称 即当前作业 时 它会返回作业信息的空白和零 任何有关原
  • 如何控制 Firefox 中表格单元格的溢出?

    我有一个表格 希望第一列有一个垂直滚动条 这在 Chrome IE9 iPad 上的 Safari 中有效 但在 Firefox 中无效 为什么不 我究竟做错了什么 HTML table tbody tr td class col1 div
  • 使用 withColumn 从查找表动态添加新列

    我将 Spark sql 2 4 1v 与 Java 8 结合使用 我有一个场景 需要从查找表中动态添加列 我有带列的数据框 A B C X Y Z 当少数 原始 列 例如 A B C 值为 null 时 我需要采用 替换列 例如 X Y
  • 返回上一个片段无法正常工作

    我正在使用导航抽屉 当我选择一个项目时 它会正确地将前一个片段替换为我选择的片段 但是如果我打开另一个片段 然后单击后退按钮 它将转到上一个活动而不是上一个活动片段 这样做有什么问题吗 private void selectItem int