Как установить фон представления на Motorola Cliq

#android #background #motorola

#Android #фон #motorola

Вопрос:

Я разработал игру «Поиск предметов» для Android. Перед запуском я протестировал его на множестве телефонов, и он работает точно по назначению на всех из них.

Я столкнулся со странной проблемой, которая, похоже, относится только к Motorola Cliq. Он принудительно закрывает приложение каждый раз, когда оно пытается запуститься.

После использования отчаянного метода «закомментировать все» для отслеживания ошибки я обнаружил, что проблема заключается в строке «android: background=»scrollb» в RelativeLayout. Как мне обойти это? Почему это происходит только с Cliq?

Вот мой код:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="scrollb" android:id="@ id/TableLayout01" android:paddingLeft="5mm" android:paddingRight="5mm" android:gravity = "center_horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"   android:fitsSystemWindows="true" android:orientation="vertical">

<TextView android:id="@ id/TextView06" android:text="" android:textSize = "10mm" android:gravity = "center_horizontal"  android:layout_width="match_parent" android:layout_height="wrap_content"></TextView>
<TextView android:clickable="true" android:layout_below="@id/TextView06" android:textColor="#8b4513" android:textStyle="italic" android:id="@ id/TextView01" android:layout_height="wrap_content" android:text="Play as Guest" android:textSize = "3mm" android:gravity = "center_horizontal" android:layout_width="match_parent"></TextView>
<TextView android:clickable="true" android:layout_below="@id/TextView01" android:textColor="#8b4513" android:textStyle="italic" android:id="@ id/TextView02" android:layout_height="wrap_content" android:text="" android:textSize = "3mm" android:gravity = "center_horizontal"  android:layout_width="match_parent" android:visibility="gone"></TextView>
<TextView android:clickable="true" android:layout_below="@id/TextView02" android:textColor="#8b4513" android:textStyle="italic" android:id="@ id/TextView03" android:layout_height="wrap_content" android:text="" android:textSize = "3mm" android:gravity = "center_horizontal"  android:layout_width="match_parent" android:visibility="gone"></TextView>
<TextView android:clickable="true" android:layout_below="@id/TextView03" android:textColor="#8b4513" android:textStyle="italic" android:id="@ id/TextView04" android:layout_height="wrap_content" android:text="" android:textSize = "3mm" android:gravity = "center_horizontal"  android:layout_width="match_parent" android:visibility="gone"></TextView>
<TextView android:clickable="true" android:layout_below="@id/TextView04" android:textColor="#8b4513" android:textStyle="italic" android:id="@ id/TextView05" android:layout_height="wrap_content" android:text="" android:textSize = "3mm" android:gravity = "center_horizontal"  android:layout_width="match_parent" android:visibility="gone"></TextView>

<EditText  android:layout_centerHorizontal="true" android:gravity = "center_horizontal" android:layout_below="@id/TextView05" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="" android:id="@ id/EditText01"></EditText>

<Button android:layout_centerHorizontal="true" android:layout_below="@id/EditText01" android:layout_width="wrap_content" android:text="Create Player" android:id="@ id/Button01" android:layout_height="wrap_content"></Button>
<TextView  android:layout_centerHorizontal="true" android:gravity = "center_horizontal" android:layout_below="@id/Button01" android:textColor="#8b4513" android:textStyle="italic" android:id="@ id/TextView07" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Welcome to Hidden Treasures,n your journey awaits"></TextView>

</RelativeLayout>
  

Вот трассировка стека: * Обратите внимание, я изменил относительную компоновку на линейную

 04-08 13:39:50.646: ERROR/AndroidRuntime(781): Uncaught handler: thread main exiting due to uncaught exception
04-08 13:39:50.696: ERROR/AndroidRuntime(781): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.htf/com.htf.main}: android.view.InflateException: Binary XML file line #2: Error inflating class java.lang.reflect.Constructor
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2297)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.ActivityThread.access$2000(ActivityThread.java:115)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1721)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.os.Looper.loop(Looper.java:123)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.ActivityThread.main(ActivityThread.java:3977)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at java.lang.reflect.Method.invokeNative(Native Method)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at java.lang.reflect.Method.invoke(Method.java:521)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at dalvik.system.NativeStart.main(Native Method)
04-08 13:39:50.696: ERROR/AndroidRuntime(781): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class java.lang.reflect.Constructor
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.LayoutInflater.createView(LayoutInflater.java:512)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:562)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:313)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.Activity.setContentView(Activity.java:1683)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at com.htf.main.onCreate(main.java:33)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2260)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     ... 11 more
04-08 13:39:50.696: ERROR/AndroidRuntime(781): Caused by: java.lang.reflect.InvocationTargetException
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.widget.LinearLayout.<init>(LinearLayout.java:92)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at java.lang.reflect.Constructor.constructNative(Native Method)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.LayoutInflater.createView(LayoutInflater.java:499)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     ... 21 more
04-08 13:39:50.696: ERROR/AndroidRuntime(781): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/title_bar_shadow.9.png from drawable resource ID #0x7f020068
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.content.res.Resources.loadDrawable(Resources.java:1643)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.View.<init>(View.java:1739)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.View.<init>(View.java:1688)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.view.ViewGroup.<init>(ViewGroup.java:271)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     ... 25 more
04-08 13:39:50.696: ERROR/AndroidRuntime(781): Caused by: java.io.FileNotFoundException: res/drawable/title_bar_shadow.9.png
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.content.res.AssetManager.openNonAssetNative(Native Method)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.content.res.AssetManager.openNonAsset(AssetManager.java:417)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     at android.content.res.Resources.loadDrawable(Resources.java:1636)
04-08 13:39:50.696: ERROR/AndroidRuntime(781):     ... 29 more
  

Комментарии:

1. Ваш файл макета нам ничего не говорит. Как предложил adamp, если вы можете опубликовать трассировку стека исключения (если оно принудительно закрывается, будет исключение), то это поможет.

2. Я добавил трассировку стека. Я также заметил, что эмулятор показывает значок по умолчанию вместо значка, который я установил для своей игры. Это намекало бы на то, что с ресурсами что-то не так, но это происходит только с motorola cliq? Для меня это не имеет смысла. Вам придется полюбить фрагментацию…

Ответ №1:

Я обнаружил проблему. Android использует три папки для hdpi, mdpi, ldpi. Motorola cliq пытается получить доступ к ресурсам, просматривая drawable. Только для рисования, без hdpi, mdpi, ldpi. Которого, конечно, не существует.