2015-05-03 11 views
6

W moim kodzie mam pole ArrayList<Buttons> o nazwie mButtons. Każdy z tych przycisków wywołuje (w języku XML) tę samą funkcję onClickonButtonClick. Funkcja wygląda następująco:Jak pozbyć się ostrzeżenia o podejrzanych połączeniach w Android Studio?

public void onButtonClick(View view) { 
    int buttonIndex = mButtons.indexOf(view); 
} 

Ale Android Studio utrzymuje ostrzegając mnie o Suspicious call to 'ArrayList.indexOf'.

Ok, próbowałem się pozbyć, rzucając view do Button. Następnie ostrzeżenie zmieniło się na Casting 'view' to 'Button' is redundant.

Cóż, próbowałem zmienić sygnaturę funkcji, aby otrzymać Button zamiast View. Ale teraz mam jedno ostrzeżenie na każdej deklaracji Button (XML): Method 'onButtonClick' on '...Activity' has incorrect signature.

Zastanawiam się tylko dodać //noinspection SuspiciousMethodCalls, ponieważ wydaje się, że nie ma obejścia tego problemu.

Byłbym wdzięczny, gdyby ktoś wiedział, jak się go pozbyć.

Odpowiedz

6

Możesz odrzucić do Button linię wcześniej.

Button button = (Button) view; 
int buttonIndex = mButtons.indexOf(button); 
+0

Jestem naprawdę rozczarowany jak ja t faktycznie działa – gfpacheco

4

Podobnie jak dodatkową odpowiedź, wystarczy zawinąć wywołanie w czeku instanceof

if (view instanceof Button) { 
    buttonIndex = mButtons.indexOf(button); 
} 

Zasadniczo podejrzane połączenia mówiąc: „Nie ma gwarancji, że jest to ważny przedmiot szukać”

(Przepraszamy za powolne odpowiedzi uderzę ten wątek przy poszukiwaniu odpowiedzi i pomyślałem, że zapewniając alternatywne rozwiązanie byłoby najlepsze)

+0

Nie ma problemu, dzięki za udostępnienie – gfpacheco

Powiązane problemy