我正在开发一个带ActionBars的应用程序,它支持Gingerbread和up.所以基本上我正在使用支持库并进行扩展
ActionBarActivity
我所有的活动.一切都很好,除了
方法.它只是没有按照文档中的说明进行调用.
只要用户选择从操作栏中在应用程序的活动层次结构中向上导航,就会调用此方法.
这很容易,但我无法弄清楚为什么它不能按预期工作,也没有谷歌搜索帮助.这是一个错误吗?还是我错过了什么?
lao*_*yur 26
如果覆盖onOptionsItemSelected,则onSupportNavigateUp不会被调用.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// handle ?? button here
break;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
您是否在Manifest.xml文件中设置了父活动?如果是,则不会被调用.@see http://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html#onSupportNavigateUp()
如前所述,如果覆盖OnOptionsItemSelected,OnSupportNavigateUp将不会被调用.你可以通过添加一个default:case来确保它被调用,OnOptionsItemSelected所以:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.something:
Intent intent = new Intent(this,someActivity.class);
startActivity(intent);
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
在super.onOptionsItemSelected(item)将确保OnSupportNavigateUp被调用.这是为了你不希望案件在你的内部处理OnOptionsItemSelected
| 归档时间: |
|
| 查看次数: |
12167 次 |
| 最近记录: |