2011-12-28 15 views
11

Staram się, aby mój spinner działał jak pasek rozwijanej listy akcji, ale nie mogę go w ogóle wdrożyć, nie ma wielu tutoriali po tym, jak przeszukuje się Google. Myślę, że ma to coś wspólnego z .setListNavigationCallbacks(); linii kodu, po prostu nie mam pojęcia, jak to działa od tej linii.Jak dodać spinner do paska akcji?

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

} 

Odpowiedz

18

Krok 1: Pozbądź się swojego Spinner.

Krok 2: Pozbądź się swojego OnItemSelectedListener.

Krok 3: Podaj swój ArrayAdapter jako pierwszy parametr do setListNavigationCallbacks().

Krok # 4: Podaj implementację ActionBar.OnNavigationListener jako drugi parametr do setListNavigationCallbacks().

Krok 5: W metodzie onNavigationItemSelected() zwrotnego w Twoim ActionBar.OnNavigationListener, czy cokolwiek to jest chcesz zrobić w oparciu o zmianę stanu nawigacji (np wykonać FragmentTransaction).

Krok # 6: Zmień wygląd aplikacji, aby nie uruchamiać działań w oparciu o tę opcję nawigacji, jak próbujesz powyżej. Rozpocznij działanie od przycisku paska narzędzi lub elementu menu opcji lub użyj fragmentów do zamiany (części) interfejsu na istniejącą aktywność. Wyświetlanie listy i kart w pasku akcji to , a nie do uruchamiania działań.

+0

"Sterowanie listami i kartami na pasku akcji nie służy do uruchamiania działań." Dlaczego nie można użyć paska działań do uruchamiania działań? –

+0

@JerryBrady: Elementy akcji (tj. Przyciski na pasku narzędzi) z pewnością mają sens w uruchamianiu innych działań. – CommonsWare

+1

@CommonsWare: Zgadzam się, ale Mapy Google jawnie rażąco naruszają tę zasadę w ICS, każdy wpis w nawigacji listy otwiera osobne działanie. Nie uważam tego szczególnie dziwnego zachowania; zamiast tego zastanawiam się, w jaki sposób udało im się zapobiec krótkiemu momentowi otrzymania przez niewłaściwą etykietę niewłaściwego elementu. –

Powiązane problemy