如何解决在 Activity App Bar 上按下后转到带有它被调用的片段的父活动
我遇到了一个可能发生在其他社区成员身上的问题,我想问一下是否有人知道解决方案。我有一个包含这两个活动(MainActivity、UserProfileActivity)的应用。
MainActivity 包含一个 NavigationDrawer,可以在片段中导航。所以这就是问题所在。在第二个片段中导航并按下该片段中的按钮时。它打开 UserProfileActivity(MainActivity 的子项),并带有子项生成的应用栏。当您按下这个新 Activity 的后退按钮时,它应该返回到我们在调用这个新 Activity 时所在的片段中的 MainActivity(父)。但不是,它返回到 MainActivity 但加载了 home 片段。不是我们之前打电话的那个。
有人知道如何解决这个问题吗?这里我留下我从片段中做的意图的代码:
Intent intent = new Intent(context,UserProfileActivity.class);
Bundle bundle = new Bundle();
bundle.putString("userId",message.getUserId());
intent.putExtras(bundle);
context.startActivity(intent);
解决方法
这种行为背后的原因:
如果您在 manifest.xml 中设置 android:parentActivityName
的值,默认情况下,每次按下导航按钮都会创建父 Activity 的新实例,而不是从 Activity 后台堆栈中弹出它,因此您看到家庭片段。
解决方法
首先,从 manifest.xml 中删除 android:parentActivityName
。在您的 ChildActivity 的 onCreate 方法中,如果您还没有输入 getSupportActionBar().setDisplayHomeAsUpEnabled(true)
。然后覆盖您 ChildActivity 的 onSupportNavigateUp()
,并输入 finish()
。
ChildActivity.java:
public class ChildActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
getSupportActionBar().setDisplayHomeAsUpEnabled(true)
...
}
@Override
public boolean onSupportNavigateUp() {
finish();
return super().onSupportNavigateUp();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。