在我的Android应用中,我在操作栏上使用向上导航图标。 在我的孩子活动中,我已经设置了
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>
但每当我点击向上图标时,我的应用程序就会退出。
这里缺少什么,我不明白。
答案 0 :(得分:1)
请阅读此部分:http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp
具体来说,添加以下代码:
@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);
}
答案 1 :(得分:-1)
但是我不建议使用navigateUpFromSameTask,因为它会导致重新创建ParentActivity,而不是在ICS及更低版本上恢复。出现这种情况的原因是因为NavUtils对Pre JellyBean和Post JellyBean的行为有所不同,如SO.
中所述。更好的方法是在子活动中手动处理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级别。