2012-11-04 1 views
0

У меня есть Android-приложение, которое отлично работает в Android 2, но когда я пытаюсь запустить его на Android 4, он падает и выдает исключения. Пыльник - это журнал, который я получилAndroid-приложение, работающее в Android 2, но исключающее исключение в Android 4

11-04 16:50:01.015: E/AndroidRuntime(753): FATAL EXCEPTION: main 11-04 
16:50:01.015: E/AndroidRuntime(753): java.lang.RuntimeException: 
Unable to start activity 
ComponentInfo{com.example.huda.elklob/com.example.huda.elklob.options}: 
android.view.InflateException: Binary XML file line #22: Error 
inflating class android.widget.Button 11-04 16:50:01.015: 
E/AndroidRuntime(753):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.app.ActivityThread.access$600(ActivityThread.java:123) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.os.Handler.dispatchMessage(Handler.java:99) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.os.Looper.loop(Looper.java:137) 11-04 16:50:01.015: 
E/AndroidRuntime(753):  at 
android.app.ActivityThread.main(ActivityThread.java:4424) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
java.lang.reflect.Method.invokeNative(Native Method) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
java.lang.reflect.Method.invoke(Method.java:511) 11-04 16:50:01.015: 
E/AndroidRuntime(753):  at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
dalvik.system.NativeStart.main(Native Method) 11-04 16:50:01.015: 
E/AndroidRuntime(753): Caused by: android.view.InflateException: 
Binary XML file line #22: Error inflating class android.widget.Button 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.view.LayoutInflater.createView(LayoutInflater.java:606) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.view.LayoutInflater.onCreateView(LayoutInflater.java:653) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:742) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.view.LayoutInflater.inflate(LayoutInflater.java:489) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.view.LayoutInflater.inflate(LayoutInflater.java:396) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.view.LayoutInflater.inflate(LayoutInflater.java:352) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.app.Activity.setContentView(Activity.java:1835) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
com.example.huda.elklob.options.onCreate(options.java:17) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.app.Activity.performCreate(Activity.java:4465) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
11-04 16:50:01.015: E/AndroidRuntime(753):  ... 11 more 11-04 
16:50:01.015: E/AndroidRuntime(753): Caused by: 
java.lang.reflect.InvocationTargetException 11-04 16:50:01.015: 
E/AndroidRuntime(753):  at 
java.lang.reflect.Constructor.constructNative(Native Method) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
java.lang.reflect.Constructor.newInstance(Constructor.java:417) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.view.LayoutInflater.createView(LayoutInflater.java:586) 11-04 
16:50:01.015: E/AndroidRuntime(753): ... 25 more 11-04 16:50:01.015: 
E/AndroidRuntime(753): Caused by: java.lang.OutOfMemoryError 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:483) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773) 
11-04 16:50:01.015: E/AndroidRuntime(753):  at 
android.content.res.Resources.loadDrawable(Resources.java:1935) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.content.res.TypedArray.getDrawable(TypedArray.java:601) 11-04 
16:50:01.015: E/AndroidRuntime(753): at 
android.view.View.<init>(View.java:2785) 11-04 16:50:01.015: 
E/AndroidRuntime(753):  at 
android.widget.TextView.<init>(TextView.java:449) 11-04 16:50:01.015: 
E/AndroidRuntime(753):  at 
android.widget.Button.<init>(Button.java:108) 11-04 16:50:01.015: 
E/AndroidRuntime(753):  at 
android.widget.Button.<init>(Button.java:104) 11-04 16:50:01.015: 
E/AndroidRuntime(753):  ... 28 more 

Может кто-нибудь помочь?

+0

Некоторый код, который может вызвать его, может оказаться полезным при поиске проблемы. – Ragnagord

+0

Спасибо kmatyaszek для редактирования :) – user1753461

ответ

3

Yech. В следующий раз, пожалуйста, отформатируйте свой дамп LogCat как «код», а не «quote». По крайней мере, разрывы линий будут в их законных местах.

Тем не менее, соответствующий бит здесь:

Caused by: java.lang.OutOfMemoryError 
11-04 16:50:01.015: E/AndroidRuntime(753): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
11-04 16:50:01.015: E/AndroidRuntime(753): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:483) 

Из памяти ошибки при декодировании растрового изображения. Сделайте это меньшим растровым изображением.

+0

Я буду, спасибо за ваш совет :) Я постараюсь сделать растровое изображение меньше, ok – user1753461

+0

Согласен. Для более подробного аналитического подхода вы также можете увидеть мой ответ (если вам интересно). –

+0

Спасибо большое Seva Alekseyev :) Я сделал растровое изображение меньше, и он работал;) – user1753461

1

Как показывает ваш журнал, корень ошибки (исключения) - это OutOfMemoryError. Растровое изображение слишком велико для размещения в памяти (т. Е. У вас недостаточно места для управляемой кучи Dalvik). Более того, возможно, что загрузка растрового изображения требует больше памяти, чем его сохранения (см. Ниже).

Очень вероятно, что на дисплее вашего устройства Android 4 ваше изображение потребует больше пикселей, чем в случае вашего устройства Android 2, а Android увеличит изображение в памяти, что приведет к еще большему потреблению памяти в то время как загружается битмап.

Так что либо вам нужно сделать свой растровый рисунок меньше для этого типа отображения (например, для дисплея, используемого вашим устройством Android 4), либо вы можете попытаться загрузить и установить растровое изображение вручную (см. Этот official page о загрузке больших растровых изображений).

Смежные вопросы