Android 如何从一个活动中的片段导航到另一个活动中的片段?

Android 如何从一个活动中的片段导航到另一个活动中的片段?,android,android-fragments,fragmenttransaction,Android,Android Fragments,Fragmenttransaction,我想将导航添加回工具栏。我需要从一个活动中的片段到另一个活动中的特定片段 它看起来有点像这样,每一条橙色的线意味着导航到一个新的活动或片段: 如何从OtherActivity从片段B移动到片段A?使用此代码更改片段 fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentC()).commit(); 和要在自定义工具栏上显示导航,请添加 Toolbar toolbar = (Toolbar) ro

我想将导航添加回工具栏。我需要从一个活动中的片段到另一个活动中的特定片段

它看起来有点像这样,每一条橙色的线意味着导航到一个新的活动或片段:


如何从OtherActivity从片段B移动到片段A?

使用此代码更改片段

fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentC()).commit();
和要在自定义工具栏上显示导航,请添加

Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
   ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
   ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true)
   ((AppCompatActivity)getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
考虑以下步骤:

在按住
Fragment
A的
Activity
1中,您希望直接在
Activity
2中加载
Fragment
B

现在,我想首先,然后按下
片段a
中的一个按钮,您可以直接进入
活动B

这意味着,只要到达
活动
2,就可以加载
片段B

由于您处理的是反向导航(我相信您指的是
upNavigation
?),因此可以覆盖以下内容:

但请仔细观察,因为如果您需要在活动2中加载确切的片段,您需要知道:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case android.R.id.home:
            Intent intent = new Intent(this, Activity2.class);
            intent.putExtra("frag", "fragmentB");
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }

}
如您所见,当您单击工具栏上的后退箭头时,我们通过我们的意图传递一个值,以标识要加载的片段

接下来,在您的
活动2
中,只需获取
额外的意图
,然后执行一个开关或
if语句

@Override
public void onResume(){
  super.onResume();

  Intent intent = getIntent();

  String frag = intent.getExtras().getString("frag");

  switch(frag){

    case "fragmentB":
       //here you can set Fragment B to your activity as usual;
        fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentB()).commit();
       break;
  }
}
从这里开始,您应该在活动2中显示片段B

现在,您可以在Activity 2中处理相同的事情,以决定当用户单击back home箭头时要去哪里

我希望这有助于你了解情况


注意:我考虑过接口方法,并意识到它不是必需的,因为使用这种方法可以很容易地做到这一点

片段A和片段B在其活动中占据整个屏幕吗?它们是否只是这些活动中显示的片段?您是否尝试过代码?您是否尝试过事件或接口/片段A在其活动中占据整个屏幕,但片段B没有。我将添加一张活动图片和片段供您查看@Marat@Eenvincible接口选项将如何工作。原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.os.Bundle.getString(java.lang.String)”@不可能。顺便说一句,我真的很喜欢你的应用程序,我在play store上看过它们!嘿,谢谢你,汤姆;让我来帮你;你看,你必须首先确保onResume中的意图不是null;如果您需要更多帮助,我们可以聊天顺便说一句,如果您从另一个位置进入活动2,您也必须将额外的内容传递给意图-这样,就不会是空的我需要更多帮助,我们可以聊天吗@让我们移动这个来聊天吧