当前位置: 首页 > 知识库问答 >
问题:

我必须在Android清单中指定父活动名称吗?

姜明贤
2023-03-14

我有一个启动另一个活动的活动。
我必须在Android清单中指定父活动吗?我问这个是因为可能还有其他活动也会启动这个活动,所以我应该指定所有这些活动吗?

android:parentActivityName="com.example.myfirstapp.MainActivity" 

共有3个答案

徐瑞
2023-03-14

您不一定需要在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()。

魏君博
2023-03-14

虽然如果需要向上导航或堆栈合成,则应该定义它,但请注意,属性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属性

朱俊雅
2023-03-14

根据文件-

当用户按下操作栏中的向上按钮时,系统读取该属性以确定应该启动哪个活动。系统还可以使用此信息与TaskStackBuilder合成活动的后堆栈。

因此,如果要使用完导航(而不是通过后退按钮进行导航)或TaskStackBuilder,则只需指定。在其他情况下,你不需要它。

有关更多信息,请参阅向上导航文档。(从原始存档,现在重定向到关于设计导航图的Jetpack导航文档)

 类似资料: