首页 > 解决方案 > 如何在两个不同活动类的片段之间切换

问题描述

我有两个不同的活动,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}

我如何实现它?

标签: androidandroid-fragments

解决方案


我在第二个活动中创建了一个意图,并使用有关要调用的片段的信息启动了活动 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,都会调用该行代码,并且如果意图为空,它将引发错误。

信用:https ://stackoverflow.com/a/36064344/3380537


推荐阅读