Czy istnieje sposób programowego wyboru opcji menu? Zasadniczo chcę przycisk w widoku, aby wykonać tę samą akcję, co naciśnięcie określonej opcji menu. Myślałem o próbie wywołania onOptionsItemSelected (element MenuItem), ale nie wiem, co umieścić w pozycji menu.Android - Programowo wybierz opcję menu
Odpowiedz
Dlaczego oba zdarzenia interfejsu użytkownika nie wywołują wspólnej metody?
Tak, istnieje sposób wyboru opcji menu! I masz rację o wywołanie onOptionsItemSelected (pozycja MENUITEM) oto sposób, aby uzyskać MenuItem:
1) Pierwszą rzeczą, którą trzeba zrobić, to odniesienie do klasy Menu wewnątrz swojej działalności tutaj:
private Menu menu;
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
this.menu = menu;
return super.onCreateOptionMenu(menu);
}
2) Tak więc klasa Menu zawiera wszystkie pozycje menu. Więc skoro masz to odniesienie, symulować kliknij menu tak:
onOptionsItemSelected(menu.findItem(R.id.action_id));
... gdzie action_id jest identyfikatorem elementu menu, które chcesz wybrać. możesz znaleźć ten identyfikator w swoim menu xml.
Szukałem tego również. i chociaż ma sens wywoływanie metody używanej, gdy element zostanie sprawdzony, to nie ustawi elementu menu jako sprawdzonego w interfejsie użytkownika.
Więc co skończyło się robi było:
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
MenuItem menuItem = (MenuItem)navigationView.getMenu().findItem(R.id.nav_menu_item_1);
menuItem.setChecked(true);
onNavigationItemSelected(menuItem);
Następujące nie działa zgodnie z oczekiwaniami dla mnie:
onOptionsItemSelected (menu.findItem (R.id.action_id));
- 1. Knockout wyłącz opcję wybierz opcję
- 2. Android Zmień elementy menu szuflady w menu Programowo programowo
- 3. Android Twórz proste menu programowo
- 4. Windows Mobile Cordova - Zawijanie słów Wybierz opcję menu
- 5. html wybierz opcję WYBRANE
- 6. Użyj jQuery wybierz opcję?
- 7. Wybierz opcję Nie wybrano
- 8. wybierz opcję rozmiar czcionki
- 9. Jak programowo utworzyć menu w systemie Android?
- 10. Ustaw widoczność w menu programowo Android
- 11. android: wybierz domyślnie program uruchamiający programowo
- 12. Wybierz drugą opcję korzystania kapibary
- 13. Angularjs Wybierz opcję Wybrane domyślne
- 14. Yii2 dropdownList wybierz opcję domyślną
- 15. Wybierz opcję Aktualizuj w PostgreSql
- 16. materiał 2 Autouzupełnianie: wybierz opcję
- 17. Wybierz następną opcję z jQuery
- 18. Programowo ustaw wybraną wartość dijit Wybierz widżet
- 19. Openlayers 3: Wybierz programowo programowo
- 20. Style wybierz menu
- 21. wybierz rozwijane menu nieaktywne w przeglądarce Androida
- 22. Autouzupełnianie JQuery oparte na wartości wybierz opcję
- 23. Usuń kontakt wybierz opcję plików forma wybierz Opcje
- 24. Wybierz opcję - wymienić i z regex
- 25. Podwójne kliknięcie wyłączona wybierz opcję, aby umożliwić
- 26. jQuery/Programme Wybierz opcję w polu wyboru
- 27. Wybierz opcję z React TestUtils Symuluj
- 28. Kapibara: Wybierz opcję przy wartości nie tekst
- 29. Jak zachować opcję "Wybierz jeden" w usłudze DropDownChoice Wicket?
- 30. Jak zatrzymać rozwijanego menu wyświetlania „Wybierz opcję” gdy wyświetlany jest komunikat o błędzie
Najprostsze odpowiedzi są często najlepsze;) +1 – Squonk
Mam pewien wspólny kod w onOptionsItemSelected() dla wszystkich elementów menu, których raczej nie chciałbym podzielić. Miałem nadzieję, że istnieje prosty sposób na wywołanie opcji menu. – dt0
@ dt0 Zawsze istnieje sposób na refaktoryzację kodu i sprawienie, że będzie SUCHY i ładny, zwłaszcza jeśli jest to twój własny kod. Jeśli wspólny kod jest zbiorem zmiennych uruchomieniowych, być może możesz użyć struktury, która będzie zawierała wszystko w jednym miejscu. Jeśli to funkcjonalne, może możesz je zinterpretować na użyteczne metody. Zawsze jest jakiś sposób i zdecydowanie uważam, że nie należy wywoływać jednego zdarzenia interfejsu z innego. Jeśli myślisz o wyrazistości swojego kodu, menu nie zostało kliknięte, więc wywołanie zdarzenia z menu jest trochę dziwne. – Rich