我有一个启动另一个活动的活动。
我必须在Android清单中指定父活动吗?我问这个是因为可能还有其他活动也会启动这个活动,所以我应该指定所有这些活动吗?
android:parentActivityName="com.example.myfirstapp.MainActivity"
根据文件-
当用户按下操作栏中的向上按钮时,系统读取该属性以确定应该启动哪个活动。系统还可以使用此信息与TaskStackBuilder合成活动的后堆栈。
因此,如果要使用完导航(而不是通过后退按钮进行导航)或TaskStackBuilder,则只需指定。在其他情况下,你不需要它。
有关更多信息,请参阅向上导航文档。(从原始存档,现在重定向到关于设计导航图的Jetpack导航文档)
虽然如果需要向上导航或堆栈合成,则应该定义它,但请注意,属性android: atttActivityName
是在API Level 16中引入的。
对于以前的版本,父活动信息是从<代码>
例子:
<activity
android:name=".DetailActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
<代码>
除非API级别已知,否则<代码>
有关指定父活动的更多信息,请参见:https://developer.android.com/training/implementing-navigation/ancestral.html#SpecifyParent
此外,考虑在您的main中定义
android: LaunchMode
属性
您不一定需要在AndroidManifest中定义父活动。xml。您可以使用以下代码启用反向导航:
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
并实现这一点:
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
但是,如果您在清单中定义了父活动,那么系统将读取该属性,以确定当用户按下操作栏中的向上按钮时应启动哪些活动。i、 e,它将创建父活动的新实例,这意味着它将调用父活动的onCreate()。