Otrzymuję wiele rodzajów błędów wyświetlanych w subj. Te błędy wydają się sporadyczne i nie mogę ich odtworzyć. Ze stosu mogę się dowiedzieć, że taki błąd może wystąpić w przypadku moich różnych zasobów układu. Linia XML również się różni.
Czy ktoś może wyjaśnić, dlaczego występuje ten błąd? A co mogę zrobić, aby rozwiązać ten problem?
Stos
=============================================================
com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>
--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------
----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>
1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. android.view.LayoutInflater.inflate(LayoutInflater.java:382)
7. android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8. android.view.LayoutInflater.inflate(LayoutInflater.java:276)
9. com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:208)
10. android.app.Activity.setContentView(Activity.java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.java:161)
13. android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
14. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2587)
15. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
16. android.app.ActivityThread.access$2200(ActivityThread.java:131)
17. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
18. android.os.Handler.dispatchMessage(Handler.java:99)
19. android.os.Looper.loop(Looper.java:123)
20. android.app.ActivityThread.main(ActivityThread.java:4702)
21. java.lang.reflect.Method.invokeNative(Native Method)
22. java.lang.reflect.Method.invoke(Method.java:521)
23. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
24. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------
-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.android.f, version 2.0.9 (build 1232)
Oto wynik XML, jednak taki błąd występuje w innych plikach XML
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ViewFlipper android:layout_gravity="fill" android:id="@+id/flipper" android:layout_height="fill_parent" android:layout_width="fill_parent">
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_1"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_2"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_3"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_4"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_5"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_6"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_7"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_8"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_9"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_10"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_11"/>
</ViewFlipper>
<LinearLayout android:id="@+id/exit_bar" android:layout_gravity="top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
<Button android:background="@drawable/orange_btn" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:textColor="#000000" android:shadowColor="#ffffff" android:shadowRadius="1.6" android:shadowDx="1.5" android:shadowDy="1.3" android:id="@+id/exit_tour_btn" android:text="Exit" android:layout_marginLeft="20dip"/>
<TextView android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_gravity="center" android:layout_width="110dip" android:layout_marginLeft="20dip" android:textSize="16dip" android:textStyle="bold" android:text="Life360 Tour"/>
</LinearLayout>
<Button style="@style/BlueBtn" android:text="Continue" android:layout_marginTop="40dip" android:id="@+id/continue_btn" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" />
<FrameLayout android:id="@+id/bottom_bar" android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/left" android:layout_gravity="left|center" android:background="@drawable/tour_left" android:layout_marginLeft="10dip"/>
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:layout_gravity="right|center" android:background="@drawable/tour_right" android:layout_marginRight="10dip"/>
</FrameLayout>
</merge>
android
xml
resources
android-inflate
Solvek
źródło
źródło
Odpowiedzi:
Wyjątek zawyżania nie jest w rzeczywistości problemem, ale tak naprawdę pochodzi z innego, głębszego problemu w układzie, który jest następnie zawijany w wyjątek InflateException. Częstym problemem jest wyjątek braku pamięci podczas próby zawyżenia widoku obrazu podczas ładowania zasobu do rysowania. Jeśli jeden z tych zasobów ma wysoką rozdzielczość pikseli, zajmie dużo pamięci, powodując wyjątek zawyżania.
Więc zasadniczo sprawdź, czy rozdzielczość pikseli w twoich rysunkach jest tylko minimum niezbędnym dla twojego układu.
źródło
ViewFlipper
ładuje wszystkie obrazy do pamięci podczas wypełniania układu. Ponieważ moje obrazy są duże zajmuje wiele pamięci, wymieniłemViewFlipper
zImageSwitcher
którego można zmienić obrazy z animacji jakViewFlipper
ale ładuje tylko jeden obraz w czasie.źródło
Może się to również zdarzyć, jeśli
VectorDrawable
używasz biblioteki obsługi using i zapomniałeś jej użyćapp:srcCompat
zamiastandroid:src
Dokładny błąd to: Wiersz pliku binarnego XML #XX: Błąd napełniania klasy ImageView
Zobacz ten link
źródło
Miałem ten sam błąd podczas tworzenia widoku niestandardowego z tylko jednym konstruktorem, spróbuj zdefiniować wszystkich konstruktorów dla niestandardowych widoków.
źródło
Wiem, że na to pytanie jest już odpowiedź, ale nadal piszę z myślą, że ktoś może napotkać tego rodzaju problem.
W moim przypadku problem polega na tym, że ładuję aplikację na telefon, która odwołuje się do układów z res / layout / folder i wartości dla @dimens z res / values / dimens tutaj jest to font_22, do którego próbuje uzyskać dostęp i jest zdefiniowany w res / values-xlarge / dimens.
W rzeczywistości aktualizuję interfejs użytkownika istniejącego projektu.
Natknąłem się na ten problem, ponieważ używam IDE Eclipse, w którym ctrl + spacja na podpowiedź podczas pisania xml dla folderu układu, wyświetla wszystkie wartości z folderu wartości, a także folder values-xlarge, niezależnie od tego, dla którego folderu piszę.
Wiem też, że wartości w obu plikach powinny być takie same, aby były mapowane na różne ekrany.
Mam nadzieję, że może to pomóc komuś napotkać tego rodzaju głupi problem.
źródło
Napotkałem ten sam błąd i znalazłem główny powód:
Użyj kontekstu aplikacji, aby zwiększyć widok.
Nadmuchiwanie z kontekstem aktywności naprawiło błąd.
źródło
Mój rozmiar obrazu to tylko 14Kb, ale problem polega na tym, że projektant dał mi 1011px x 1819px (rozdzielczość jest zbyt wysoka, co powoduje wyjątek InflateException)
źródło
Gdyby ktoś miał podobne problemy, miałem taki problem przy zawyżaniu widoku:
View.inflate(getApplicationContext(), R.layout.my_layout, null)
stałej zastępując
getApplicationContext()
wthis
źródło
Wystąpił ten błąd, ponieważ wybrałem motyw jako motyw Material. Ale ponieważ próbowałem uruchomić aplikację na 4.4.2, dało ten błąd.
Rozwiązanie: Wybierz Theme_holo jako motyw
źródło
4.2.2
. Ale gdzie mogę zmienić motyw Material na Theme_holo? Nie widzę słowa kluczowego Materiał w moimstyles.xml
lubv21/styles.xml
. Zobacz moje pytanie: stackoverflow.com/questions/37883677/…Ten link może ci pomóc. Spróbuj sprawdzić swój manifest pod kątem problemów. Jeśli możesz to powtórzyć, opublikuj cały ślad stosu, abyśmy mogli zobaczyć, na czym właściwie polega błąd.
EDYCJA: Jestem pewien, że to sprawdziłeś, ale co jest w linii 12 pliku XML, którego używasz do układu TourActivity?
źródło
Dla mnie komunikat o błędzie był faktycznie niewystarczający w log cat, więc oto co zrobiłem, aby dowiedzieć się, co spowodowało problem:
(W komunikacie o błędzie dziennika cat jest napisane, że błąd wystąpił podczas zawyżania określonego układu w moim HomeFragment.java)
Evaluate expression
na nią:Run > Evaluate Expression
lubalt - F8
tools:targetApi="lollipop"
(błąd wystąpił tylko na starszych urządzeniach).źródło
Znalazłem ten sam błąd i ustalenie, na czym polegał błąd, zajęło dwa dni.
Błąd był po prostu dlatego, że próbowałem użyć:
android:background
Zamiast:
app:srcCompat
w pliku SVG.
W twoim przypadku uważam, że to jest to
Polecam używać tego w ten sposób
dodaj to do swojej aplikacji build.gradle
i
Mam nadzieję, że to pomoże.
źródło
Wiem, że jest to pytanie, na które udzielono odpowiedzi, ale nie widzę przyczyny, przed którą stanąłem.
To było to, że Android Studio umieściło moje drawables w / drawable-V24. Mój emulator to API 23. Więc ostatecznie nie może go znaleźć.
Rozwiązaniem było przeniesienie wszystkich drawables do folderu / drawable (nr -24).
źródło
Powinieneś skopiować pliki graficzne z folderu „drawable-24” do folderu „drawable”.
źródło
Miałem ten sam błąd i rozwiązałem przenoszenie moich drawables z folderu drawable-mdpi do folderu drawable. Zajęło mi to trochę czasu, zanim zdałem sobie z tego sprawę, ponieważ w Eclipse wszystko działało idealnie, podczas gdy w Android Studio dostałem te brzydkie błędy uruchomieniowe.
Uwaga dotycząca edycji: jeśli przeprowadzasz migrację z eclipse do Android Studio, a Twój projekt pochodzi z eclipse, może się tak zdarzyć, więc uważaj, że w Android Studio rzeczy trochę różnią się od eclipse.
źródło
W moim przypadku ten błąd występuje, gdy używam pływającego przycisku akcji i ustawiam
android:backgroundTint="#000"
. Więc po prostu nie ustawiajbackgroundTint
i nie rozwiązuj problemu. Mam nadzieję, że to Ci pomoże.źródło
app:backgroundTint
zamiastandroid:backgroundTint
.Dla mnie moim problemem było to, że byłem
Na tle LinearLayout, gdy je usunąłem, test przeszedł.
źródło
Miałem ten problem właśnie teraz i udało mi się dowiedzieć, co to jest. Odwoływałam się do koloru w moich wartościach, który powodował problemy. Zdefiniowałem to ręcznie, zamiast korzystać z jednej z sugestii na liście rozwijanej.
źródło
Wystąpił ten sam błąd, gdy uruchomiłem aplikację na poziomie API 16 (26 było w porządku). To dlatego, że użyłem
?attrr/colorAccent
w moim kształcie do rysowania:Zastąpienie tego zwykłym kolorem rozwiązało mój problem.
źródło
Miałem ten sam problem i rozwiązałem go, usuwając drawable-v24 z (24) przed obrazami w folderze do rysowania i zastępując je zwykłymi rysunkami.
źródło
Wiem, że ten wątek jest stary, ale wciąż na niego odpowiadam, aby nikt inny nie mógł spędzać bezsennych nocy.
Refaktoryzowałem stary projekt, którego pliki układów zawierały zakodowane na stałe atrybuty, takie jak
android:maxLength = 500
. Postanowiłem więc zarejestrować to w swoimres/dimen
pliku jako<dimen name="max_length">500</dimen>
.Zakończyłem refaktoryzację prawie 30 plików układu z moją wartością res. Zgadnij co? następnym razem, gdy uruchomiłem projekt, zaczęło rzucać to samo
InflateException
.Jako rozwiązanie, potrzebne do ponownego wprowadzenia wszystkich zmian i zachowania tych samych wartości, co poprzednio.
TLDR;
Krok 1: Wszystko działa dobrze.
Krok 2: Aby przyspieszyć konserwację, zastąpiłem
android:maxLength = 500
go<dimen name="max_length">500</dimen>
iandroid:maxLength = @dimen/max_length
, właśnie tam wszystko poszło nie tak (awaria zInflateException
).Krok 3: Wszystko działa źle
Krok 4: Ponownie zrobić wszystko przez moją pracę ponownie wymianie
android:maxLength = @dimen/max_length
zandroid:maxLength = 500
.Everything został naprawiony.Krok 5: Wszystko działa dobrze.
źródło
Rozwiązałem to, przenosząc wszystkie moje elementy do rysowania z drawable-v24 do drawable
źródło
Ja też miałem podobny problem. Chociaż dla każdego może to być problem różnych złych zastosowań w kodzie, takich jak
Najbardziej ignorowanym czynnikiem może być użycie poprawnego kontekstu podczas zawyżania liczby wyświetleń. Sprawdź, czy nie używasz ApplicationContext, gdzie wymagany jest kontekst działania. Chociaż ApplicationContext może nie zawsze kończyć się błędem, ale w zależności od hierarchii widoku może mieć kluczowe znaczenie.
Rozwiązałem swój problem z BADOWYM kontekstem (używając ApplicationContext zamiast Activity w ciągu 4 dni! Więc spróbuj, jeśli to rozwiązuje. Miłego kodowania !!
źródło
Napotkałem ten sam problem, użyłem tagu widoku w xml zamiast widoku. Zastąpienie klasy View rozwiązało problem.
Mam nadzieję, że to też pomoże.
źródło
Musimy sprawdzić wersję API. Kiedyś dać kolor tła do mojego
LinearLayout
Likena pewno miałem ten sam błąd,
as_royalblue.xml
wewnątrzdrawable
folderui jak to naprawiłem , w rzeczywistości wydaje się, że problem z Api, więc musimy sprawdzić poziom API, jeśli jest powyżej API 24, abyśmy mogli używać tak, jak lubimy. Ale jeśli ma mniej niż 24 lata, musimy unikać użycia, juty dają normalny kolor lub jeden kolor, a nie mieszany gradientowo.
podaj identyfikator swoim linearlayoutom i ustaw tło, jeśli jest w porządku
źródło
W moim przypadku muszę podać pełną nazwę pakietu komponentu interfejsu użytkownika biblioteki, którego używam w moim pliku układu.
źródło
U mnie stało się tak, ponieważ próbowałem mieszać obrazy grafiki wektorowej xml ze zwykłym png w tym samym pliku układu,
dopiero po zastąpieniu grafiki wektorowej xml plikami png zaczęło działać
źródło
Po prostu rozwiązuję ten problem, po prostu usuwam twoje obrazy z do rysowania (v24) i po prostu wklejam je do folderu do rysowania, który działa dla mnie.
źródło
Miałem ten sam błąd w
Crashlytics
z dziwnego urządzenia: Motorola One Vision Android 5.1 i 20 GB (darmowej) pamięci RAM, zrootowana To urządzenie jest pierwotnie dostarczane z Androidem 9.0, 4 GB RAMPrawdopodobnie ktoś próbuje zhakować aplikację, którą obecnie tworzę, i ma problemy z obsługą wielu plików APK. Nie można więc znaleźć elementów do rysowania, a aplikacja powoduje awarię
źródło