And*_*res 10 android android-actionbar
我正在使用带有下拉菜单的ActionBar,并onNavigationItemSelected()在创建Activity时立即调用,因此调用第一个项目.我的下拉菜单的第一项是Home,与按下应用程序图标的操作相同,android.R.id.home因此当应用程序启动时它会自行调用.为了避免这种情况发生,我有这个代码:
if(this.getClass() != FrecView.class){ //if i am not currently on the Activity
Intent frec = new Intent(this, FrecView.class);
frec.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(frec);
}
Run Code Online (Sandbox Code Playgroud)
但我在所有活动中都有ActionBar,因此每次启动每个活动时它都会自动调用,所以我必须为每个活动放置代码.怎么了?我怎样才能防止这种情况发生?
正如马克所说,它不是一个菜单.
但是,这是一种快速而肮脏的方法来忽略第一个调用:
声明此类字段:
//mNaviFirstHit should be initialized to true
private boolean mNaviFirstHit = true;
Run Code Online (Sandbox Code Playgroud)
并在onNavigationItemSelected中:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if (mNaviFirstHit) {
mNaviFirstHit = false;
return true;
}
// DO WHAT YOU WOULD NORMALLY DO
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 ActionBar 和下拉菜单,并且在创建 Activity 后立即调用 onNavigationItemSelected()
这不是设计为“菜单”,就像选项卡不是设计为“菜单”一样。列表导航旨在允许用户指示当前活动的某些内容,通常通过替换片段来指示。操作项(例如,工具栏按钮、操作溢出区域)用于在活动之间导航。
我的下拉菜单的第一项是“主页”,与按 android.R.id.home 的应用程序图标相同的操作,因此当应用程序启动时,它会调用自身。
所以,从你的“菜单”中删除它。用户可以按左侧的应用程序图标导航回家。
| 归档时间: |
|
| 查看次数: |
7774 次 |
| 最近记录: |