10

Moja aplikacja uruchamia się i uruchamia się poprawnie na moim telefonie Samsung Galaxy S3 z systemem Android 4.1.2, ale gdy próbuję przetestować tę samą aplikację na moim Motorola Droid X z systemem Android 2.3.4 aplikacja ulega awarii, zanim wszystko zostanie wyświetlone na ekranie Droid X.

Mój LogCat znajduje się poniżej. Niestety, to nie wskazuje mi dokładnie to, co część mojego kodu się niepowodzeniem, ale wydaje się, że coś zrobić z moim układzie z powodu tych wyjątków:

08-09 10:43:39.686: E/AndroidRuntime(3192): FATAL EXCEPTION: main 
08-09 10:43:39.686: E/AndroidRuntime(3192): android.view.InflateException: Binary XML file line #11: Error inflating class <unknown> 
08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: java.lang.reflect.InvocationTargetException` 
08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: android.content.res.Resources$NotFoundException: 
Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x10102fd a=-1} 

Log cat:

08-09 10:43:39.686: E/AndroidRuntime(3192): FATAL EXCEPTION: main 
08-09 10:43:39.686: E/AndroidRuntime(3192): android.view.InflateException: Binary XML file line #11: Error inflating class <unknown> 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.LayoutInflater.inflate(LayoutInflater.java:386) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.AbsListView.obtainView(AbsListView.java:1456) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.ListView.makeAndAddView(ListView.java:1821) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.ListView.fillDown(ListView.java:686) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.ListView.fillFromTop(ListView.java:754) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.ListView.layoutChildren(ListView.java:1670) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.AbsListView.onLayout(AbsListView.java:1286) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.View.layout(View.java:7184) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:702) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.View.layout(View.java:7184) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.View.layout(View.java:7184) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.View.layout(View.java:7184) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.View.layout(View.java:7184) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.View.layout(View.java:7184) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1140) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.os.Looper.loop(Looper.java:130) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.app.ActivityThread.main(ActivityThread.java:3806) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at java.lang.reflect.Method.invoke(Method.java:507) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at dalvik.system.NativeStart.main(Native Method) 
08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: java.lang.reflect.InvocationTargetException 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at java.lang.reflect.Constructor.constructNative(Native Method) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  ... 35 more 
08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x10102fd a=-1} 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.content.res.Resources.loadDrawable(Resources.java:1719) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.view.View.<init>(View.java:1951) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.TextView.<init>(TextView.java:453) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  at android.widget.TextView.<init>(TextView.java:446) 
08-09 10:43:39.686: E/AndroidRuntime(3192):  ... 38 more 
08-09 10:43:42.201: I/Process(3192): Sending signal. PID: 3192 SIG: 9 
+2

Czy Twoja aplikacja używa jakichkolwiek funkcji, które nie są dostępne w API 10? – DrYap

+0

Czy możesz pokazać swój plik xml. Tak jak DrYap powiedział, że używasz czegoś, co nie jest dostępne dla API 10 i jest dostępne dla API 16 lub wprowadzone w kolejnym API – Manu

+0

dzięki za komentarze, tak, wymyśliłem to i wysłałem moją odpowiedź poniżej. Czy jest gdzieś referencja, aby wiedzieć, co jest niedostępne w API 11 i poniżej? Dokładniej jak w mojej odpowiedzi, wartości? Android: attr? – nommer

Odpowiedz

14

Naprawiono!

Patrząc na to więcej i wygląda na to, że miało to coś wspólnego z ArrayAdapter i moim układem. Użyłem niestandardowego layoutu (drawer_list_item.xml) dla mojego ArrayAdaptera, który zawierał pewien kod ICS, więc musiałem usunąć kilka linii z tego pliku XML, a aplikacja uruchomiła się dobrze na Androidzie API 10 (konkretnie Android 2.3. 4). Linie szczególnie w moim pliku układu, które spowodowały problemy to:

android:background="?android:attr/activatedBackgroundIndicator" 
android:minHeight="?android:attr/listPreferredItemHeightSmall" 

Oto kod w moim SherlockFragmentActivity który był przyczyną wyjątek Układ/awarii:

m_drawerList.setAdapter(new ArrayAdapter<String>(getSupportActionBar().getThemedContext(),R.layout.drawer_list_item, m_drawerNames)); 

stary kod drawer_list_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:textAppearance="?android:attr/textAppearanceListItemSmall"<!-- Deleted line--> 
android:gravity="center_vertical" 
android:paddingLeft="16dp" 
android:paddingRight="16dp" 
android:textColor="#fff" 
android:background="?android:attr/activatedBackgroundIndicator"<!-- Deleted line--> 
android:minHeight="?android:attr/listPreferredItemHeightSmall"/> <!-- Deleted line--> 

ustalony kod drawer_list_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:gravity="center_vertical" 
android:padding="16dp" 
android:textColor="#fff" /> 
+2

Tak, jeden prosty sposób, aby dowiedzieć się, który zasób dokładnie powoduje błąd, to zmienić (tymczasowo) 'cel' w pliku' project.properties' na, powiedz 'android-10'. To sprawia, że ​​Eclipse podświetla problematyczne pliki i linie. – Stan

+0

Dziękuję bardzo za podzielenie się z nami rozwiązaniem! –

+0

Dzięki!Odpowiedź stała się o wiele bardziej widoczna, gdy zmieniłem wiersz w moim pliku XML, a następnie Lint oznaczył trzy linie jako wymagające późniejszego poziomu interfejsu API. Morał z tej historii: wykonaj losową edycję plików XML, a następnie pojawią się błędy. – Gravitoid

0

Czy używasz ActionBarSherlock lub HoloEverywhere? Doświadczyłem tego problemu podczas korzystania z tych bibliotek i próbowania stylów/tematów.

Zasadniczo niektóre atrybuty są domyślnie określone w ICS +, ale nie są określone w starszych wersjach Androida. Tak więc musisz zarchiwizować zasoby, jak pokazano tutaj: http://actionbarsherlock.com/theming.html

Opublikowanie kodu dla motywów/stylów może być dla nas pomocne, aby zobaczyć, co jest nie tak.

0

Bez dodatkowego kodu nie mogę dokładnie powiedzieć, dlaczego aplikacja nie działa. Wiemy tylko, że możesz użyć niektórych funkcji dostępnych tylko dla wyższych interfejsów API. Opublikuj swoje układy xml i może twoje klasy.

Należy jednak uwzględnić bibliotekę pomocy technicznej. To często rozwiązuje problem.

Powiązane problemy