操作栏中的向上导航很容易设置并在Jelly Bean上正常工作:
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
以及AndroidManifest中的该活动
android:parentActivityName=".MainActivity"
但ICS(4.0.3)上没有属性android:parentActivityName
。
要支持具有支持库的旧设备,还要包含<元数据> element,指定父活动为android.support.PARENT_ACTIVITY的值。
...我做了,但这是关于支持库的呢?我按照http://developer.android.com/tools/support-library/setup.html上的支持库设置指南进行了操作,但是......它仍然没有让我该应用程序在ICS上运行该死的按钮。这是一件小事,为什么它必须如此疯狂地复杂化?
答案 0 :(得分:0)
您正在延长Activity
而不是android.support.v7.app.ActionBarActivity
。
然后使用getSupportActionBar()
代替getActionBar()
。
答案 1 :(得分:0)
我也遇到了这个问题,结果略有不同。
在我的应用中的每个屏幕上,即使该屏幕上没有菜单选项,我也会给菜单充气:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
上面的代码设置了一个菜单,但从不膨胀。
然后我明确地将向上导航设置为指向特定的类。注意android.R.id.home的使用:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
Intent i = null;
switch (item.getItemId())
{
case android.R.id.home:
i = new Intent(getActivity(), DesiredActivity.class);
startActivityForResult(i, 0);
break;
default:
break;
}
return true;
}
我已经在Android 4.0.3,4.0.4,4.4.2上对此进行了测试,但它确实有用。
答案 2 :(得分:0)
你可以做NKijak的回答。
另一种方法是在子活动中手动处理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级别。