Contextual Action Bar - nie rozumiem metody onCreateOptionsMenu

Odpowiedz Nowy wątek
2017-04-21 11:14
0

Witam tworzę sobie mały projekcik na androida i potrzebowałem stworzyć contextual Action bar. Wszystko ładnie mi działa tylko nie rozumiem metody onCreateOptionsMenu. Wygląda ona tak

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getSupportMenuInflater(); //1
        inflater.inflate(R.menu.activity_main, menu); //2
        return true;
    }

Z tego co rozumiem to jej głównym zadaniem jest podmiana menu w toolbarze z aktualnego na ten który ma być dostępny przy dłuższym kliknięciu. Tylko nie wiem kiedy ona jest dokładnie wywoływana i co robią po kolei linijki 1 i 2
Korzystałem z tej strony https://androidkennel.org/con[...]l-toolbar-actionbar-tutorial/
ten efekt chcę osiągnąć
title

edytowany 2x, ostatnio: furious programming, 2017-04-21 11:16
2017-04-21 11:49
0

1 linijka inicjalizuje obiekt, który służy do odczytu XML i tworzenia z niego obiekt menu
2 linijka robi już dokładnie to o czym pisałem powyżej czyli odczytuje z klasy R menu i inicjuje nim obiekt menu przekazany jako parametr metody.


Wiedza to potęga

Pozostało 580 znaków

2017-04-21 12:00
0

Czyli ta zmienna menu w

public boolean onCreateOptionsMenu(Menu menu)

to jest moje menu z toolbara (to początkowe)?

Pozostało 580 znaków

2017-04-21 13:31
0

Nie, akurat kod który podałeś po prostu wczytuje menu. Nie ma to nic wspólnego z ActionMode o którym pisałeś.


Wiedza to potęga

Pozostało 580 znaków

2017-04-21 13:43
0

@Haskell: kurczę namieszałem z dwoma metodami :/ od początku miała być metoda

@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
    MenuInflater menuInflater = getMenuInflater(); //1
    menuInflater.inflate(R.menu.toolbar_cab, menu); //2
    return true;
}

1 inicjuje obiekt do odczytu z XML
2 ustawia mi nowe menu?
i kiedy jest wywoływana metoda onCreateActionMode jak przytrzymam jakiś obiekt w liście?

Do usunięcia jest metoda

@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
    switch (menuItem.getItemId()) {
        case R.id.action_delete:
            for (String item : toDelete) {
                countries.remove(item);
            }
            actionMode.finish();
            return true;
        default:
            return false;
    }
}

Ona jest wywoływana kiedy na tym nowym menu kliknę wybrany przycisk? Czy również wtedy kiedy coś kliknę w liście?

edytowany 4x, ostatnio: Masterpc96, 2017-04-21 14:15

Pozostało 580 znaków

2017-04-21 14:18

onCreateActionMode jest wołana gdy przytrzymasz jakiś obiekt, onActionItemClicked jest wołana gdy wybierzesz opcję z menu. Jest jeszcze onItemCheckedStateChanged które jest wołane za każdym razem gdy dodajesz kolejne elementy (po przytrzymaniu pierwszego).


Wiedza to potęga
edytowany 1x, ostatnio: Haskell, 2017-04-21 14:21

Pozostało 580 znaków

2017-04-21 14:36
0

onItemCheckedStateChanged to rozumiem, Tam tworzę kod dodawania obiektów do listy toDelete

EDIT:
A

menuInflater.inflate(R.menu.toolbar_cab, menu);

ustawia mi nowe menu?

edytowany 1x, ostatnio: Masterpc96, 2017-04-21 14:37

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0