2013-07-27 4 views
0

Я только начал свое первый Android приложение на имени Play Маркет индийского Logo Quizjava.lang.RuntimeException: Невозможно начать деятельность

И я получаю некоторые отчеты об ошибках. Из них одна такая:

java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.indian.logoquiz/com.indian.logoquiz.Play}: 
android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2247) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2297) 
at android.app.ActivityThread.access$700(ActivityThread.java:152) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5328) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class  <unknown> 
at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
at    com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java: 56) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:467) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:327) 
at android.app.Activity.setContentView(Activity.java:1928) 
at com.indian.logoquiz.Play.onCreate(Play.java:39) 
at android.app.Activity.performCreate(Activity.java:5250) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
... 11 more 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
at android.view.LayoutInflater.createView(LayoutInflater.java:593) 
... 23 more 
Caused by: java.lang.OutOfMemoryError 
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817) 
at android.content.res.Resources.loadDrawable(Resources.java:2854) 
at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
at android.view.View.<init>(View.java:3460) 
at android.view.ViewGroup.<init>(ViewGroup.java:446) 
at android.widget.LinearLayout.<init>(LinearLayout.java:176) 
at android.widget.LinearLayout.<init>(LinearLayout.java:172) 
... 26 more 

Мой play.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@drawable/playpage"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:layout_marginTop="5dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp"> 

    <Button 
     android:id="@+id/lvl1" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.33" 
     android:alpha="0.85" 
     android:text="" 

     /> 


    <Button 
     android:id="@+id/lvl2" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.33" 
     android:alpha="0.85" 
     android:text="" 
     /> 


    <Button 
     android:id="@+id/lvl3" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.34" 
     android:alpha="0.85" 
     android:text="" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" > 

    <Button 
     android:id="@+id/lvl4" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.33" 
     android:alpha="0.85" 
     android:text="" /> 

    <Button 
     android:id="@+id/lvl5" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.33" 
     android:alpha="0.85" 
     android:text="" /> 

    <Button 
     android:id="@+id/lvl6" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.34" 
     android:alpha="0.85" 
     android:text="" /> 

</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_marginBottom="5dp"> 

    <Button 
     android:id="@+id/lvl7" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.33" 
     android:alpha="0.85" 
     android:text="" /> 

    <Button 
     android:id="@+id/lvl8" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.33" 
     android:alpha="0.85" 
     android:text="" /> 

    <Button 
     android:id="@+id/lvl9" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.34" 
     android:alpha="0.85" 
     android:text="" /> 

</LinearLayout> 

</LinearLayout> 

приложение становится разбился при нажатии кнопки 1-го уровня .... Может ли это быть из-за вложенный вес в любом случае? Пожалуйста, помогите! ....

ответ

0

Вы получаете исключение из памяти для изображений в своей деятельности.

Если какое-либо устройство с небольшим размером кучи или буфера использует приложение, оно может получить исключение памяти, поскольку вы, возможно, использовали изображения с высоким разрешением.

попробуйте под кодом уменьшить использование памяти растровых изображений приложения.

private Bitmap decodeFile(File f){ 
    Bitmap b = null; 

     //Decode image size 
    BitmapFactory.Options o = new BitmapFactory.Options(); 
    o.inJustDecodeBounds = true; 

    FileInputStream fis = new FileInputStream(f); 
    BitmapFactory.decodeStream(fis, null, o); 
    fis.close(); 

    int scale = 1; 
    if (o.outHeight > IMAGE_MAX_SIZE || o.outWidth > IMAGE_MAX_SIZE) { 
     scale = (int)Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE/
      (double) Math.max(o.outHeight, o.outWidth))/Math.log(0.5))); 
    } 

    //Decode with inSampleSize 
    BitmapFactory.Options o2 = new BitmapFactory.Options(); 
    o2.inSampleSize = scale; 
    fis = new FileInputStream(f); 
    b = BitmapFactory.decodeStream(fis, null, o2); 
    fis.close(); 

    return b; 
} 

Надеюсь, что это поможет!

+0

Я использую код: общественности Bitmap getBitmap (Context CTX, строка pathNameRelativeToAssetsFolder) \t { \t \t InputStream bitmapIs = NULL; \t \t Bitmap bmp = null; \t \t попробовать \t \t { \t \t \t bitmapIs = ctx.getAssets().открытый (pathNameRelativeToAssetsFolder); \t \t bmp = BitmapFactory.decodeStream (bitmapIs); \t \t \t \t } \t \t поймать (IOException е) \t \t { \t \t e.printStackTrace(); \t \t} \t \t наконец \t \t { \t \t если (bitmapIs! = NULL) \t \t { \t \t \t попробовать \t \t \t { \t \t \t \t \t bitmapIs.close(); \t \t \t \t \t \t \t \t \t} \t \t \t поймать (IOException е) \t \t \t \t { \t \t \t \t \t // TODO автоматическая генерация улова блока \t \t \t \t \t e.printStackTrace (); \t \t \t \t} \t \t} \t \t} \t \t возврата BMP; \t} – Vaido

+0

Как я сохранил все изображения в папке моих активов! – Vaido

+0

, но поскольку logcat является проблемой, в растровом изображении есть только исключение памяти. так что было бы лучше проверить, в каком состоянии он получает ошибку? –

0

Другие ответы говорили о Out of Memory Exception, но поскольку вы говорили о вложенном весе, здесь есть что-то, что может помочь в понимании этого лучше. Это может не решить вашу проблему, но несколько вещей.

В общем случае существуют два параметра, которые используются вместе много раз:
android:weightSum="1" и android:layout_weight. Если вы не укажете weightSum во внешнем макете, то его считают 1. Сумма всех android:layout_weight внутри наружного прохода должна быть равна сумме веса этой внешней компоновки. Например: Если у вас есть 3 кнопки внутри LinearLayout, и вы хотите определить для них равные веса, вы можете сделать это следующим образом.

<LinearLayout 
    ... 
    android:weightSum="3" 
    > 

    <Button 
     ... 
     android:layout_weight="1" 
    /> 

    <Button 
     ... 
     android:layout_weight="1" 
    /> 

    <Button 
     ... 
     android:layout_weight="1" 
    /> 

</LinearLayout> 

Аналогично вы можете сделать для раскладок:

<LinearLayout 
    android:weightSum="3" 
    > 

    <LinearLayout 
     ... 
     android:layout_weight="1" 
    /> 

    <LinearLayout 
     ... 
     android:layout_weight="1" 
    /> 

    <LinearLayout 
     ... 
     android:layout_weight="1" 
    /> 

</LinearLayout> 
0

вы забыли поставить закрывающий тег для родительского макета в прошлом. </LinearLayout>

0

Рекомендуется удалять растровые изображения из памяти, как только они вам не понадобятся. Путь вы можете сделать это путем рециркуляции Bitmap:

Bitmap newImage = Bitmap.createBitmap(wid, hgt, Bitmap.Config.ARGB_8888); 
// Use here your newImage... 
newImage.recycle(); 
newImage = null; 
+0

Я получаю сообщение об ошибке: Невозможно нарисовать переработанные растровые изображения! – Vaido

+0

вы не должны перерабатывать изображение перед его использованием. Когда вы подтвердите, что в будущем больше не будет использоваться ссылка на изображение, тогда вы должны его переработать. иначе u получит исключение NullpointerException. В любом случае, вы можете размещать свои коды, где вы перерабатываете? –

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