Contextual Action Bar - nie rozumiem metody onCreateOptionsMenu

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/contextual-toolbar-actionbar-tutorial/
ten efekt chcę osiągnąć
title

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.

0

Czyli ta zmienna menu w

public boolean onCreateOptionsMenu(Menu menu)

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

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ś.

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?

1

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).

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?

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