2013-09-01 14 views
7

私はこのアクティビティを達成するために、私はthis tutorialを使用しています。私はこのアクティビティのアクションバーでspinnerをonCreateOptionsMenuです。私の問題は、アクティビティがランチで、onNavigationItemSelectedメソッドが起動し、スイッチ/ケースのコードが実行され、位置0に設定したアクティビティが開かれるときです。アクティビティが昼食のときにスイッチ/ケースを実行しないようにするにはどうすればよいですか?アクティビティの起動時にonNavigationItemSelectedが発生するのを防ぐ方法を教えてください。

@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, R.array.spinner_data,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); 
} 

答えて

6

あなたはonCreateOptionsMenu(Menu)内側に次のコードは必要ありません。

を.... ....

それを削除し、あなたの活動のonCreate(Bundle)方法でそれを置きます。

編集:onCreate(Bundle)内の次のコード

boolean initializing = true; 

場所:

グローバルboolean変数を宣言

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, R.array.spinner_data,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, 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, mOnNavigationListener); 
getActionBar().setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener); 
+0

ありがとうございますが、問題は解決しませんでした。アクティビティランチ時に、最初のケースのstartActivityが実行されます。 –

+0

あなたは何も考えていないですか? –

+0

@MisaghAghakhani上記の更新されたコードをお試しいただけますか? – Vikram

関連する問題