2013-09-01 43 views
7

Tôi muốn sử dụng spinner trong thanh tác vụ trong hoạt động của mình bên dưới là onCreateOptionsMenu: Tôi sử dụng this tutorial để đạt được cách tiếp cận này. Vấn đề của tôi là khi hoạt động là bữa trưa, phương thức onNavigationItemSelected kích hoạt và mã trên chuyển đổi/trường hợp chạy và hoạt động mà tôi đặt cho vị trí 0 mở ra. Tôi nên làm gì để ngăn chặn việc chuyển đổi/trường hợp khi hoạt động ăn trưa?Làm thế nào để ngăn chặn onNavigationItemSelected cháy khi hoạt động được khởi chạy?

@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); 
} 

Trả lời

6

Bạn không cần đoạn mã sau bên onCreateOptionsMenu(Menu):

.... ....

Hủy bỏ nó và đặt nó trong phương pháp của hoạt động của bạn onCreate(Bundle).

Edit:

Khai báo một boolean biến toàn cầu:

boolean initializing = true; 

Đặt đoạn mã sau bên onCreate(Bundle):

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

Cảm ơn bạn nhưng vấn đề không giải quyết. khi hoạt động ăn trưa startActivity trong trường hợp đầu tiên chạy. –

+0

Bạn không có ý tưởng gì? –

+0

@MisaghAghakhani Bạn có thể thử sử dụng mã được cập nhật ở trên không. – Vikram

Các vấn đề liên quan