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