ActionBar中的onNavigationItemSelected在启动时被调用怎么能避免呢?

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,因此每次启动每个活动时它都会自动调用,所以我必须为每个活动放置代码.怎么了?我怎样才能防止这种情况发生?

Ira*_*lis 5

正如马克所说,它不是一个菜单.

但是,这是一种快速而肮脏的方法来忽略第一个调用:

声明此类字段:

//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)


Com*_*are 4

我正在使用 ActionBar 和下拉菜单,并且在创建 Activity 后立即调用 onNavigationItemSelected()

这不是设计为“菜单”,就像选项卡不是设计为“菜单”一样。列表导航旨在允许用户指示当前活动的某些内容,通常通过替换片段来指示。操作项(例如,工具栏按钮、操作溢出区域)用于在活动之间导航。

我的下拉菜单的第一项是“主页”,与按 android.R.id.home 的应用程序图标相同的操作,因此当应用程序启动时,它会调用自身。

所以,从你的“菜单”中删除它。用户可以按左侧的应用程序图标导航回家。