活动在我的清单中声明为:
<activity
android:name=".TicketingHomeActivity"
android:label="@string/title_activity_ticketing_home"
android:parentActivityName=".HomeActivity" />
如何以编程方式获取
android:parentActivityName
的值?我需要这样做,因为我刚刚用工具栏替换了ActionBar,但是即使清单中未设置parentActivityName属性,
getSupportActionBar().setDisplayShowHomeEnabled(true)
现在仍在活动中显示向上箭头。因此,我想在我的BaseActivity中检测是否未设置parentActivityName,因此可以相应地隐藏“向上”箭头。注意:此问题不是this question的重复,因为我专门询问如何以编程方式检测
android:parentActivityName
属性的值。 最佳答案
您可以在BaseActivity上调用getParentActivityIntent()
。
它将返回一个Intent。然后,您可以调用getComponent()
,它将返回一个ComponentName
,您可以从其中获取android:parentActivityName
(类名)。
编辑
代码示例:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
toolbar.setTitle(getTitle());
Intent parentActivityIntent = getParentActivityIntent();
boolean doesParentActivityExist;
if (parentActivityIntent == null) {
doesParentActivityExist = false;
}
else {
ComponentName componentName = parentActivityIntent.getComponent();
doesParentActivityExist = (componentName.getClassName() != null);
}
//toolbar.setSubtitle("Has parent: " + doesParentActivityExist);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null && doesParentActivityExist) {
actionBar.setDisplayHomeAsUpEnabled(doesParentActivityExist);
actionBar.setHomeButtonEnabled(doesParentActivityExist);
actionBar.setDefaultDisplayHomeAsUpEnabled(doesParentActivityExist);
actionBar.setDisplayShowHomeEnabled(doesParentActivityExist);
}
}