android - 如何在两个不同活动类的片段之间切换
问题描述
我有两个不同的活动,A 和 B。两者都有NavigationDrawer
,看起来很相似,但不一样,因为我无法在活动 B 中获取活动 A 的抽屉布局 ID。
两个活动各有 3 个片段(共 6 个)。
仅包含活动类 A的NavigationDrawer
所有片段。我的问题是,当我在活动 B 中,并尝试从导航抽屉中打开活动 A 的一个片段时,它会引发错误
No view found for id 0x7f090047 (com.wlodsgn.bunbunup:id/linear) for fragment FmMenu{b1e537f0 #0 id=0x7f090047}
我如何实现它?
解决方案
我在第二个活动中创建了一个意图,并使用有关要调用的片段的信息启动了活动 A。
Intent i = new Intent(this, ActivityClass.class);
i.putExtra("frgToLoad", "FRAGMENT_A");
startActivity(i);
现在,在活动 A 中,检查额外内容并加载正确的片段:
OnCreate(){
...
if (getIntent().getExtras() != null) {
String intentFragment = getIntent().getExtras().getString("frgToLoad");
switch (intentFragment){
case "FRAGMENT_A":
// Load corresponding fragment
break;
case "FRAGMENT_B":
// Load corresponding fragment
break;
case "FRAGMENT_C":
// Load corresponding fragment
break;
}
}
}
在我尝试为intentFragment 赋值之前,必须检查intent 是否为空。这是因为无论我是否来自活动 B,都会调用该行代码,并且如果意图为空,它将引发错误。
推荐阅读
- node.js - 如何在实时服务器上部署我的应用程序时修复 405 方法不允许错误
- python - 如何使 tkinter 框架填充整个画布并与它一起扩展?
- mysql - 如何计算基于 3 个表的 SQL
- apache-flink - 为什么没有调用全局窗口自定义触发器中的 clear 方法?
- ios - 如何使用 ios 模拟器模拟电源状态的更改
- ios - UITableView 单元格中的计数器标签在向下滚动时重复
- c - 将返回值转换为指针时c中的内存分配
- uwp - 在 Azure 管道中运行 UWP appium 测试
- javascript - 从 html 接收的值更改为在 Node.js 中添加“\u001c”。如何修复?
- elasticsearch - 如何禁用 Elasticsearch “主页”(“你知道,用于搜索”)