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

时间:2016-07-21 16:54:34

标签: android android-fragments fragmenttransaction

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

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

enter image description here

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

2 个答案:

答案 0 :(得分:2)

请考虑以下步骤:

从持有Activity A的Fragment 1开始,您希望在Fragment 2中直接加载Activity B。

现在,我在想,然后按Fragment A中的按钮,您可以直接转到Activity B

然后就意味着,您只需在到达Fragment B 2后立即加载Activity

由于您正在处理后退导航(我相信您的意思是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);
    }

}

正如您所看到的,当您单击工具栏上的后退箭头时,我们会通过我们的意图传递一个值来识别我们要加载的片段。

接下来,在Activity2中,只需获取intent extra并进行切换或if statement

@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.

现在,您可以在活动2中处理相同的事情,以确定当用户点击返回主页箭头时的去向!

我希望这可以帮助你了解一下。

注意:我考虑过接口方法,并意识到没有必要,因为这可以通过这种方法轻松完成!

答案 1 :(得分:-1)

使用此代码更改您的片段

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);