2011-12-28 24 views
11

Spinner'ımın Action Bar Drop Down List öğesi olarak çalışmasını sağlamaya çalışıyorum, ancak bunu uygulamaya koyamıyorum, Google'da arama yaptıktan sonra bunun için pek çok eğitici yok. Ben onun .setListNavigationCallbacks() ile ilgili bir şey olduğunu düşünüyorum; Kod satırı, bu çizgiden itibaren nasıl çalıştığını bilmiyorum.Düğmecemi ActionBar'a nasıl ekleyebilirim?

// setup action bar for spinner 
    ActionBar bar = getActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    bar.setListNavigationCallbacks(); 

    Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.tools_array_stopwatch, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(this); 
} 

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
     long arg3) { 
    // TODO Auto-generated method stub 
    switch (arg2) { 
    case 0:  
     break; 

    case 1:     
     Intent countdown = new Intent(this, CountdownActivity.class); 
     startActivity(countdown);      
     break; 

    default :      
     break; 
    } 
} 

public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

} 

cevap

18

Adım # 1: Spinner kurtulun.

Adım # 2: OnItemSelectedListener sayfasından kurtulun.

Adım # 3: ArrayAdapter'unuzu setListNavigationCallbacks() için ilk parametre olarak sağlayın.

Adım # 4: ActionBar.OnNavigationListener'un ikinci parametresi olarak setListNavigationCallbacks() için bir uygulama sağlayın.

Adım # 5: ActionBar.OnNavigationListener yılında onNavigationItemSelected() geri arama yönteminde, bu navigasyon eyaletinde değişikliğe dayanarak yapmak istediğim her şeyi (örneğin bir FragmentTransaction yürütmek).

Adım # 6: Yukarıda belirttiğiniz gibi, bu gezinme seçimine dayalı bir etkinlik başlatmamak için uygulamanızı yeniden tasarlayın. Aktiviteyi bir araç çubuğu düğmesi veya seçenekler menü öğesinden başlatın ya da mevcut etkinlik üzerindeki UI'nin yerini (parçasını) geçirmek için parçaları kullanın. Eylem çubuğundaki liste ve sekmelerde gezinme, etkinlik başlatma için değil.

+0

"Eylem çubuğundaki gezinmeyi listeleme ve sekmeler, etkinlikleri başlatmak için değil." Aktiviteleri başlatmak için neden bir eylem çubuğu kullanılamadı? –

+0

@JerryBrady: Eylem öğeleri (yani araç çubuğu düğmeleri) diğer etkinlikleri başlatmak için kesinlikle mantıklı. – CommonsWare

+1

@CommonsWare: Aynı fikirde olma eğiliminde olurdum, ancak Google Haritalar bu ilkeyi ICS'de ihlal ediyor gibi görünüyor, liste gezinmesindeki her giriş ayrı bir etkinlik başlatıyor. Bu özellikle garip davranışı bulamıyorum; Bunun yerine, bir ürüne dokunduğumda spinnerın yanlış etiketi kısa sürede almasını engellemeyi nasıl başardıklarıdır. –

İlgili konular