处理屏幕方向变化的片段?

2023-12-01

我正在使用这种代码来处理主要活动中的三个片段......

FragmentA is Fixed it One Frame .. I change FragmentB and FragmentC on Button Click on FragmentA. his Code is Running well either in Portrait or Landscape view .Here is The Code bellow. enter image description here

public class MainActivity extends FragmentActivity implements
        OnSwitchClickListener {

    FragmentManager manager;
    FragmentA fragA;
    FragmentB fragB;
    FragmentC fragC;

    boolean fragBSet = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fragA = new FragmentA();
        fragB = new FragmentB();
        fragC = new FragmentC();

        manager = getSupportFragmentManager();
        FragmentTransaction ft = manager.beginTransaction();

        ft.add(R.id.a_container, fragA, "frag A");

        if (fragBSet) {
            ft.add(R.id.bc_container, fragC, "frag C");
        } else {
            ft.add(R.id.bc_container, fragB, "frag B");
        }
        fragBSet = true;
        ft.commit();

    }

    @Override
    public void onSwitchClick(View v) {
        Toast.makeText(getApplicationContext(), "Switch clkick from Activity",
                Toast.LENGTH_LONG).show();
        FragmentTransaction ft = manager.beginTransaction();
        if (fragBSet) {
            ft.remove(fragB);
            ft.add(R.id.bc_container, fragC, "frag C");
            fragBSet = false;
        } else {
            ft.remove(fragC);
            ft.add(R.id.bc_container, fragB, "frag B");
            fragBSet = true;
        }

        ft.commit();

    }

这段代码在纵向或横向视图中都运行良好......但是每当我更改方向时,两个片段都会相互覆盖。

需要解决方案。


当你的方向改变时,你的Activity被重新创建。

"In the scenario where a user rotates their device, Android will destroy your 
application’s activity(s).  Before destroying them it calls, onSaveInstanceState,
allowing developers to persist data.  Once the activity is recreated post 
rotation, the OS will call onRestoreInstanceState giving developers a chance to 
restore the application state pre-rotation."  

你应该尽力挽救你的Fragments State.

放置片段: 将对片段的引用放入 Bundle 中。该 Bundle 可以持久保存为已保存状态,并且稍后恢复 getFragment(Bundle, String) 时将返回同一片段的当前实例。

@Override
protected void onSaveInstanceState(Bundle outState) {
   FragmentManager manager = getFragmentManager();
   manager.putFragment(outState, MyFragment.TAG, mMyFragment);
}  

获取片段: 检索先前使用 putFragment(Bundle, String, Fr​​agment) 放置的引用的当前 Fragment 实例。

private void instantiateFragments(Bundle inState) {
   FragmentManager manager = getFragmentManager();
   FragmentTransaction transaction = manager.beginTransaction();

   if (inState != null) {
      mMyFragment = (MyFragment) manager.getFragment(inState, MyFragment.TAG);
   } else {
      mMyFragment = new MyFragment();
      transaction.add(R.id.fragment, mMyFragment, MyFragment.TAG);
      transaction.commit();
   }
}  

恢复片段:

@Override
protected void onRestoreInstanceState(Bundle inState) {
   instantiateFragments(inState);
}  

希望这可以帮助。

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

处理屏幕方向变化的片段? 的相关文章

  • 带阴影的弯曲 Android 工具栏

    我需要为工具栏或卡片视图提供弯曲的底视图 我尝试过的 bg toolbar xml
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 无法解析符号 FlutterActivity

    我使用 VCS gt Checkout from Version Control 将 flutter 项目从 github 导入到 Android Studio 中 现在我面临的问题是 Cannot resolve symbol Flutt
  • 如何编辑 gradle 依赖项

    我正在开发一个 android 项目 该项目在我的 gradle 文件中使用以下依赖项 compile com mapzen on the road 1 1 1 我想编辑其中一个文件 以添加一些缺少的功能并为该项目做出贡献 如何下载该项目并
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • 无法将 Tesseract OCR 模块添加到 Android Studio

    我按照此处找到的分步指南进行操作 https www codeproject com Articles 840623 Android Character Recognition https www codeproject com Artic
  • layout.xml 的用途是什么?

    人们为什么使用layout xml在他们的resources like
  • 如何将单选按钮状态保存到已保存/共享首选项?

    我可以在保存的首选项中保存字符串 但很难保存单选按钮 public class PersonalDetailsf extends Activity private SharedPreferences sharedPreferences pr
  • 如何检测 Google Play 上是否有我的应用程序的更新? [复制]

    这个问题在这里已经有答案了 有没有办法以编程方式检查 Google Play 上我的应用程序是否有更新 以便通知用户 我知道 android google play 有自动通知 但我想使用我自己的通知 弹出消息来更新可用性 有点像 Vibe
  • 在 Android 上的测试用例之外运行 ExtractDecodeEditEncodeMuxTest

    我正在尝试添加在 Android 上提取 解码 编辑 编码和混合视频的功能 因此 我发现了一些非常有用的实现 它是Android CTS的一部分ExtractDecodeEditEncodeMuxTest https android goo
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • 在 Android 中使用 iText 读取或打开 PDF 文件

    我是 Android 应用程序开发新手 使用 iText 我完成了 PDF 创建并在创建的文件上写入 现在我想阅读该 PDF 文件 如何使用 iText 打开或阅读 PDF 文件 例子将是可观的 那么提前 哪个是渲染 PDF 文件的最佳库
  • Facebook LoginActivity 未正确显示

    我有一个使用 Facebook 登录的应用程序 我有 FacebookSDK 并且使用 com facebook LoginActivity 问题是 在 10 英寸平板电脑上 当显示软键盘时 活动无法正确显示 我使用的是 Samsung G
  • 模拟器:进程已完成,退出代码为 134(被信号 6:SIGABRT 中断)

    我最近刚刚开始在 Mac 上下载 Android Studio 版本 3 0 1 但收到以下错误 模拟器 进程已完成 退出代码为 134 被信号 6 SIGABRT 中断 我按照 Android Studio 教程操作并能够运行模拟器 但在
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • OpenGL ES 2.0 屏幕闪烁

    我面临着一个大问题 我正在使用带有 Android 4 0 3 的 Transformer tf101 选项卡 我的应用程序使用自定义 OpenGL ES 2 0 表面 我正在用纹理渲染多个平面 该纹理大约发生变化 每秒 20 次 并通过传
  • 修改 ADW Android 启动器?

    我想更改和修改开源 ADW 启动器 启动器可在此处获取 https github com AnderWeb android packages apps Launcher https github com AnderWeb android p
  • 绘制大位图时 nSyncAndDrawFrame 速度极慢

    我想用多个大位图优化视差滚动视图 在我的 Nexus 5 上 一切都很顺利 Traceview 转储如下所示 doFrame 方法大约需要 18 毫秒才能完成 但是 当使用我的 Nexus 7 或 Android 6 模拟器 Genymot

随机推荐

  • SwiftUI 父子绑定:@StateObject 中的 @Published 不起作用,而 @State 起作用

    我有一个来自的自定义模态结构这个问题 代码如下 某些属性在模态视图中进行了修改 并通过Binding 问题是 当房产来自 StateObject Published更改不会反映在模式视图中 当使用一个简单的 State 最小示例 完整代码
  • 避免在使用层次结构参数的操作中进行静态绑定

    我发现了一个关于静态绑定的问题 我的真实课程非常扩展 所以我将使用几个玩具课程来表达我的问题 我们假设我们有以下层次结构 public class Element public class Element1 extends Element
  • 添加(减去)月份但不超过新月份的最后一天

    我希望可靠地添加和减去六个月 债券时间 lubridate 例如 添加六个月12 31 2014应该导致6 30 2015 并添加到2 28 2014应该导致8 31 2014 问题与as Date 2014 12 31 months 6
  • DOT 可以生成更结构化的图表吗?

    我不太确定如何描述我的客户想要什么 所以我会让一张图片来说明大部分内容 我正在使用 DOT 生成或多或少的物料清单问题的图表 显示所有级别的传入批次和所有传出批次 这些批次是根据传入批次中的材料创建的 我已经获得了创建包含适当结构化数据的图
  • 访问生产中的 Google App Engine Python 应用程序代码

    背景 我是 Google App Engine 的新手 熟悉其他云提供商的服务 我正在寻找类似于对生产节点的 shell 访问的访问 视图 使用基于 Python Django 的 Google App Engine 应用程序 我想查看生产
  • WPF Tab 键顺序工作错误

    我在 WPF 中有一个观点 我一直在努力使 Tab 键顺序正确 我有三个文本框 我们称它们为 Text1 Text2 和 Text3 和两个自定义控件 每个控件上都有几个其他文本框和各种控件 我们称它们为 Custom1 和 Custom2
  • Objective-c 在我的控制器中添加子视图

    我有一个与代表 控制器和其他一些东西相关的应用程序 问题是我用 init 初始化了控制器中的所有内容 此 init 创建 3 个 UIVIew openGL imagepickerview 和 MKMapView 我希望将这些视图添加到窗口
  • 获取 QF_UFNRA 中实数的小数部分

    使用 smtlib 我想使用 QF UFNRA 进行类似模数的操作 这使我无法使用 mod to int to real 之类的东西 最后我想在以下代码中获取 z 的小数部分 set logic QF UFNRA declare fun z
  • Rails 上的 Angular JS - 参数“RaffleCtrl”不是函数,未定义

    我正在关注 RoR 项目上的整数 Angular JS 教程 在我的控制器 js 文件中 我有以下内容 抽奖咖啡 Place all the behaviors and hooks related to the matching contr
  • 发布 Gmail 插件时出现问题

    我计划推出一个简单的 Gmail 插件 我已遵循发布指南中的每一步并填写了提交表格 然而现在已经过去两周了 我还没有收到任何回复 谁能告诉我我提交的内容需要多长时间才能得到审核 或者发布公共 Gmail 插件的步骤是什么 指南中的那些似乎不
  • 使用python解码tcp数据包

    我正在尝试解码通过 TCP 连接收到的数据 数据包很小 不超过100字节 然而 当它们很多时 我会收到一些连接在一起的数据包 有没有办法防止这种情况 我正在使用Python 我尝试分离数据包 我的来源如下 数据包以STX字节开始 以ETX字
  • 为什么这个 PDO 异常没有被捕获? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我有一个包含在 try catch 中的 INSERT
  • 在 java 中使用带有重写方法的 throws 子句时出现错误? [复制]

    这个问题在这里已经有答案了 当我在方法中使用 throw 子句时出现错误demo 我想知道在继承中使用 throws 有什么限制 错误是 异常ClassNotFoundException与 throws 子句不兼容Test demo Cla
  • 在域中设置命名管道安全性

    我有一个通过命名管道设置的服务器 它对于域管理员来说工作得很好 但是当我在普通用户上测试客户端时 它给出了异常 访问路径被拒绝 因此 这就是我尝试设置的权限 以授予域中所有经过身份验证的用户访问权限 我在这里做错了什么 Server Nam
  • 如何在 Rust 中分割字符串?

    来自文档 尚不清楚 在Java中你可以使用split像这样的方法 some string 123 ffd split 123 Use split let parts some string 123 content split 123 这给出
  • KVO 中的更改字典对于选择索引始终包含 NULL

    我正在使用 KVO 来获取 NSArrayController 的选择索引更改的通知 contoller addObserver self forKeyPath selectionIndex options NSKeyValueObserv
  • 连续文本组件中的空文本空间反应本机

    我有这个问题 我需要将 dummy 一词放在第一行中 直到该行完成 您可以在此处查看示例 https snack expo io B1KcRgGWX 代码 import React Component from react import T
  • 如何在bash中通过opencv访问网络摄像头?

    通过python opencv访问网络摄像头时 isOpened 返回False并且没有读取任何数据 它必须与 wsl 做一些事情吗 根据这个 github 问题 WSL 中尚不支持硬件访问 Ben Hillis 硬件访问是我们将来要研究的
  • 基准测试(Python 与使用 BLAS 的 C++)和 (numpy)

    我想编写一个广泛使用 BLAS 和 LAPACK 线性代数功能的程序 由于性能是一个问题 我做了一些基准测试 想知道我采取的方法是否合法 可以这么说 我有三个参赛者 想通过简单的矩阵乘法来测试他们的表现 参赛者是 Numpy 仅使用dot
  • 处理屏幕方向变化的片段?

    我正在使用这种代码来处理主要活动中的三个片段 FragmentA is Fixed it One Frame I change FragmentB and FragmentC on Button Click on FragmentA his