2013-09-03 15 views
6

Jestem w trakcie migracji z ActionBarSherlock do biblioteki ActionBarCompat, która została wprowadzona w Google IO 2013 (robię to, aby móc używać ActionBarDrawerToggle).Nie można zastąpić ostatniej metody z ActionBarActivity

Rozwiązałem już wszystkie niezbędne zależności (AppCompat, najnowsza biblioteka pomocnicza ...), naprawiono wszystkie importowane dane, ale teraz, gdy próbuję użyć ActionBarActivity's onMenuItemSelected, pojawia się błąd.

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    ... 
} 

błędu:

Cannot override the final method from ActionBarActivity

oryginalna metoda z ActionBarActivity (odziedziczone FragmentActivity) jest ostateczny. Kiedy używałem ABS, działało to, teraz nie mogę przesłonić metody.

(MenuItem jest klasy android.view.MenuItem a nie compat wersja ...)

Am I czegoś brakuje?

Odpowiedz

11

Zamiast używać onMenuItemSelected użyłem onOptionsItemSelected i kod skompilowany w porządku.

Czy to możliwe, że onMenuItemSelected pojawia się w dokumentach, ale nie w kodzie?

+3

Aby odpowiedzieć na twoje pytanie: Nie, w metodzie 'android.support.v7.app.ActionBar' onMenuItemSelected' znajduje się w kodzie, ale jest to metoda ** ostateczna **, i nie można" @ Zastąpić " ** końcowe ** metody. – Stigi

+0

Przepraszam, że źle wpisałem tam, a jej do późna, aby edytować. Oczywiście miałem na myśli 'android.support.v7.ActionBarActivity'. – Stigi

+0

@Stigi masz rację, ale to dziwne, ponieważ używając ABS, przesłoniłem go i definiuję go także jako ostateczny. Nie wiesz, jaki jest cel, jeśli nie chcesz go zastąpić ... – Michael