PodsumowanieCall wymaga poziom API 23 'błędu, ale getForeground() istnieje w FrameLayout z API 1
Wreszcie okazało się, że problem powiązany, setForeground()
nieprawidłowo oznaczony jako wymagające API 23 na ViewGroups rozciągających FrameLayout
.
Jeśli nie rozciągają FrameLayout
, dokumentacja jest zły i wymaga API 23.
Issue 186273: View.setForeground wrong API level
Updated pytanie
Oznaczono jako duplicated of Can't use setForeground
method on ImageView przez Commonsware i odpowiedział mu:
To błąd dokumentacji. setForeground() istniał na FrameLayout z poziomu API 1; jest tylko na widoku od poziomu API 23.
W moim przypadku błąd w dokumentacji nie został wykryty przez inspekcję w widelcu, ale robi to w ramach projektu integracji, nie rozumiem tego, tak czy inaczej, odpowiada na moje pierwsze pytanie.
Ale to nie ten sam przypadek, kod ten już rozszerza Framelayout
i przy użyciu tej metody nie jest to ImageView
, więc przypuszczam, że metoda została usunięta w interfejsie API 23. Nie pojawia się teraz w odnośniku.
Aktualizacja: I dodać diff report dla FrameLayout:
New pytanie
więc moje pytanie zmiany sposobu korzystania z metody w poprzednich wersjach, a dlaczego pojawia się błąd inspekcji wybiórczo?
Jeśli dodać redundantny obsady, komunikat o błędzie zniknie:
((FrameLayout) layout).getForeground()
Ale to dostęp do metody View
że teraz nie jest obsługiwana.
więc przypuszczam kierowania poprzednią API byłoby usunąć komunikatu o błędzie, ale chciałbym docenić rozwiązanie do korzystania z tej metody Framelayout lub wskazówkę, aby rozwiązać ten problem w moim przypadku:
ANDROID_COMPILE_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23.0.1
ANDROID_DEFAULT_MIN_SDK_VERSION=19
ANDROID_DEFAULT_TARGET_SDK_VERSION=23
obejścia
W skrócie, jako obejście, zmieniłem typ na FrameLayout
bezpośrednio, więc przestały istnieć ostrzeżenia o interfejsie API i przesyłaniu, a ja przetestowałem działanie na urządzeniu z Androidem 4.4.4 i debugowaniu, myślałem, że to się zawiesi, w każdym razie jest używane tylko w jednej animacji, a poprawię/zastąpię ją w przyszłości.
początkowe pytanie
I rozwidlone i dostosowane próbkę Google android-topeka i android-studio pokazuje błąd, że nie rozumie o poziomie API wymaganych do stosowania metody getForeground()
klasy View
w android.view
opakowanie:
połączeń wymaga poziom API 23 (obecny min z 19): android.view.View # getForeground
W reference znaki Sposób dodany w poziomie API 1, a dokumentacja (Control+Q
) pokazuje ten sam:
Ale Calling new methods on older versions inspection
pokazuje błąd, który wymagany jest poziom API 23:
znalazłem similar question, błąd w tym przypadku, ale myślę, że to nie jest błąd z powodu oryginalnego widelca nie pokazać tego błędu wiadomość.
Spróbuję wykryć pierwszy raz, kiedy pojawi się wiadomość, ale zrobiłem wiele zmian, więc każda wskazówka byłaby doceniona, dziękuję.
Więc pan dowiedzieć się, w jaki sposób możemy uzyskać lub ustawić nową wiedzę API dla urządzeń poniżej 23? –
Jeśli rozszerzasz FrameLayout, możesz użyć redundantnego rzutu lub zmienić typ na FrameLayout, aby uniknąć błędów w dokumentacji. W przeciwnym razie nie jest to możliwe, ale być może następne obejście jest dla ciebie przydatne http://stackoverflow.com/a/33201753/1009132 – albodelu
Dzięki za pomoc. –