在Android中从Actionbar向上导航
在我的android应用程序中,我正在使用actionbar上的导航图标。 在我的孩子活动中,我设置了在Android中从Actionbar向上导航,android,android-actionbar,Android,Android Actionbar,在我的android应用程序中,我正在使用actionbar上的导航图标。 在我的孩子活动中,我设置了 ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); 在舱单上我已经确定了 <activity android:name="app.sclms.UserAccount" android:label="@string/app_name"
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
在舱单上我已经确定了
<activity
android:name="app.sclms.UserAccount"
android:label="@string/app_name"
android:parentActivityName="app.sclms.MainMenu">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="app.sclms.MainMenu" />
</activity>
但每当我点击up图标时,我的应用程序就会退出
这里缺少什么,我不明白。请阅读本节: 具体来说,添加以下代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
但是,我不建议使用navigateUpFromSameTask,因为它会导致重新创建您的ParentActivity,而不是在ICS和更低版本上恢复。这种行为的原因是因为NavUtils对于Pre-JellyBean和Post-JellyBean的行为不同,如本文所述 更好的方法是在子活动中手动处理Up操作:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
startActivity(new Intent(this, ParentActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP));
default:
return super.onOptionsItemSelected(item);
}
}
这种手动方法最好的部分是,它可以按预期工作。它使用ParentActivity,而不是为所有API级别重新创建它。是否有错误?如果是,请张贴日志。