android – 如何防止onNavigationItemSelected在活动启动时触发?

我想在我的活动中的操作栏中使用微调器是onCreateOptionsMenu:我使用 this tutorial来实现这种方法.我的问题是当活动是午餐时,onNavigationItemSelected方法触发,并且交换机/案例上的代码运行,我为位置0设置的活动打开.当活动是午餐时,我该怎么做以防止运行开关/案例?
@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getSupportMenuInflater().inflate(R.menu.main,menu);

    SpinnerAdapter mSpinnerAdapter;
    if(Build.VERSION.SDK_INT <= 10)
    {
        mSpinnerAdapter = ArrayAdapter.createFromresource(this,R.array.spinner_data,android.R.layout.simple_spinner_item);
    }
    else
    {
        mSpinnerAdapter = ArrayAdapter.createFromresource(this,android.R.layout.simple_spinner_dropdown_item);
    }
    ActionBar.OnNavigationListener mOnNavigationListener = new ActionBar.OnNavigationListener()
    {
        @Override
        public boolean onNavigationItemSelected(int position,long itemId)
        {
            switch (position)
            {
                case 0:
                    Intent searchIntent = new Intent(ActivitySearchBusiness.this,ActivityFindBusinessCity.class);
                    startActivity(searchIntent);
                    break;
                case 2:
                    Intent dealsIntent = new Intent(ActivitySearchBusiness.this,ActivityDeals.class);
                    startActivity(dealsIntent);
                    break;
                case 3:
                    Intent eventsIntent = new Intent(ActivitySearchBusiness.this,ActivityEvents.class);
                    startActivity(eventsIntent);
                    break;
            }

            return true;
        }
    };
    actionBar.setListNavigationCallbacks(mSpinnerAdapter,return super.onCreateOptionsMenu(menu);
}

解决方法

您不需要onCreateOptionsMenu(菜单)中的以下代码

….
….

将其删除并将其放入活动的onCreate(Bundle)方法中.

编辑:

声明一个全局布尔变量:

boolean initializing = true;

将以下代码放在onCreate(Bundle)中:

SpinnerAdapter mSpinnerAdapter;
if(Build.VERSION.SDK_INT <= 10)
{
    mSpinnerAdapter = ArrayAdapter.createFromresource(this,android.R.layout.simple_spinner_item);
}
else
{
    mSpinnerAdapter = ArrayAdapter.createFromresource(this,android.R.layout.simple_spinner_dropdown_item);
}
ActionBar.OnNavigationListener mOnNavigationListener = new ActionBar.OnNavigationListener()
{
    @Override
    public boolean onNavigationItemSelected(int position,long itemId)
    {

        if (initializing) {
            initializing = false;
        } else {             
            switch (position)
            {
                case 0:
                    Intent searchIntent = new Intent(ActivitySearchBusiness.this,ActivityEvents.class);
                    startActivity(eventsIntent);
                    break;
            }
        }

        return true;
    }
};
//actionBar.setListNavigationCallbacks(mSpinnerAdapter,mOnNavigationListener);
getActionBar().setListNavigationCallbacks(mSpinnerAdapter,mOnNavigationListener);

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...