2013-07-12 134 views
0

我的android應用程序無法啓動活動,出於某種原因,活動的名稱是Caperucita,但我看不出是什麼問題,這是另一個這樣的活動運行完美,並且是Ricitos。也許你可以幫我無法啓動活動java.lang.RuntimeException

錯誤的logcat的:

07-12 01:54:06.849: E/AndroidRuntime(851): FATAL EXCEPTION: main 
07-12 01:54:06.849: E/AndroidRuntime(851): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.storyteller/com.example.storyteller.Caperucita}: android.view.InflateException: Binary XML file line #13: Error inflating class <unknown> 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.os.Looper.loop(Looper.java:137) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.ActivityThread.main(ActivityThread.java:5041) 
07-12 01:54:06.849: E/AndroidRuntime(851): at java.lang.reflect.Method.invokeNative(Native Method) 
07-12 01:54:06.849: E/AndroidRuntime(851): at java.lang.reflect.Method.invoke(Method.java:511) 
07-12 01:54:06.849: E/AndroidRuntime(851): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-12 01:54:06.849: E/AndroidRuntime(851): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-12 01:54:06.849: E/AndroidRuntime(851): at dalvik.system.NativeStart.main(Native Method) 
07-12 01:54:06.849: E/AndroidRuntime(851): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class <unknown> 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
07-12 01:54:06.849: E/AndroidRuntime(851): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
07-12 01:54:06.849: E/AndroidRuntime(851): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.Activity.setContentView(Activity.java:1881) 
07-12 01:54:06.849: E/AndroidRuntime(851): at com.example.storyteller.Caperucita.onCreate(Caperucita.java:26) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.Activity.performCreate(Activity.java:5104) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
07-12 01:54:06.849: E/AndroidRuntime(851): ... 11 more 
07-12 01:54:06.849: E/AndroidRuntime(851): Caused by: java.lang.reflect.InvocationTargetException 
07-12 01:54:06.849: E/AndroidRuntime(851): at java.lang.reflect.Constructor.constructNative(Native Method) 
07-12 01:54:06.849: E/AndroidRuntime(851): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
07-12 01:54:06.849: E/AndroidRuntime(851): ... 25 more 
07-12 01:54:06.849: E/AndroidRuntime(851): Caused by: java.lang.OutOfMemoryError 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.content.res.Resources.loadDrawable(Resources.java:1965) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.View.<init>(View.java:3330) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.View.<init>(View.java:3259) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.view.ViewGroup.<init>(ViewGroup.java:425) 
07-12 01:54:06.849: E/AndroidRuntime(851): at android.widget.RelativeLayout.<init>(RelativeLayout.java:210) 
07-12 01:54:06.849: E/AndroidRuntime(851): ... 28 more 

Android清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.storyteller" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.storyteller.MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="AcercaDe" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"></activity> 

    <activity android:name="Cuentos" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"></activity> 

    <activity android:name="Ricitos" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"></activity> 

    <activity android:name="Caperucita" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"></activity> 

</application> 

</manifest> 

XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<ScrollView 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="0dp" > 

    <RelativeLayout 

    android:id="@+id/rootRL" 
    android:layout_width="match_parent" 
    android:layout_height="262dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentTop="true" 
    android:layout_weight="0.83" 
    android:background="@drawable/caperucita_roja" 
    android:orientation="vertical" > 

     <RelativeLayout 
      android:layout_width="800dp" 
      android:layout_height="262dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" > 

      <ImageButton 
       android:id="@+id/ib3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:background="@android:color/transparent" 
       android:onClick="contar" 
       android:src="@drawable/boton_contar_caperucita" /> 

      <ImageButton 
       android:id="@+id/ib2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_toRightOf="@+id/ib3" 
       android:background="@android:color/transparent" 
       android:onClick="play" 
       android:src="@drawable/boton_play_caperucita" /> 

      <ImageButton 
       android:id="@+id/imageButton3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_toRightOf="@+id/ib2" 
       android:background="@android:color/transparent" 
       android:onClick="pause" 
       android:src="@drawable/boton_pausa_caperucita" /> 

     </RelativeLayout> 

</RelativeLayout> 
</ScrollView> 

</RelativeLayout> 

的java文件:

package com.example.storyteller; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.media.MediaPlayer; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.WindowManager; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.view.animation.Transformation; 
import android.widget.ImageView; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.Menu; 

public class Caperucita extends Cuentos { 

MediaPlayer mp; 
int posicion=0; 


public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.caperucita); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 


} 

public void destruir() { 
    if(mp!=null) 
     mp.release(); 
} 


public void contar(View view){ 
    destruir(); 
    mp=MediaPlayer.create(this,R.raw.caperucitaroja); 
    mp.start(); 

    } 

public void pause(View view) { 
    if(mp != null && mp.isPlaying()) { 
     posicion = mp.getCurrentPosition(); 
     mp.pause(); 

    }   
} 




public void play(View view) { 

    if(mp != null && mp.isPlaying()==false) { 
     mp.seekTo(posicion); 
     mp.start(); 

    } 

} 

protected void onResume() { 
    if(mp != null && !mp.isPlaying()) 
     mp.start(); 
    super.onResume(); 
} 

public void onPause() { 

    super.onPause(); 
if (mp != null) 
    mp.pause(); 
} 


public void onBackPressed(){ 
    super.onBackPressed(); 
    System.exit(0);  
    } 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     exitByBackKey(); 

     //moveTaskToBack(false); 

     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

protected void exitByBackKey() { 

    AlertDialog alertbox = new AlertDialog.Builder(this) 
    .setMessage("¿De verdad desea salir? si lo hace no podrá reproducir el audio desde donde lo dejó") 
    .setPositiveButton("Si", new DialogInterface.OnClickListener() { 

     // do something when the button is clicked 
     public void onClick(DialogInterface arg0, int arg1) { 

      finish(); 
      //close(); 


     } 
    }) 
    .setNegativeButton("No", new DialogInterface.OnClickListener() { 

     // do something when the button is clicked 
     public void onClick(DialogInterface arg0, int arg1) { 
         } 
    }) 
     .show(); 

} 


} 
+0

你能向我們展示在你的活動中膨脹的佈局文件嗎? –

+0

我只是發佈它! @RenatoLochetti – Whady

+0

你能發表Caperucita.java嗎? – Emmanuel

回答

1

看你的背景文件大小太大。嘗試在下面的相關佈局中移除背景屬性,然後查看是否會發生崩潰。

<RelativeLayout 
    android:id="@+id/rootRL" 
    android:layout_width="match_parent" 
    android:layout_height="262dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentTop="true" 
    android:layout_weight="0.83" 
    android:background="@drawable/caperucita_roja" 
    android:orientation="vertical" > 

要解決,你需要更多的內存的問題,或者你需要使用的要少。獲得更多內存並不是真的可行,但您可以指定更大的堆大小。在您的清單中,使用largeHeap屬性:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:largeHeap="true" > 

你可以閱讀更多關於該屬性here

要減少所需的內存量,您需要減小該背景圖像的大小。我會考慮縮小該圖像的大小。如果不能縮小尺寸,請使用PNGCrush這樣的程序來優化圖像,這可以幫助減小文件的大小而不影響圖像的質量。 Here's a link to how to use PNGCrush from the command line.

+0

這就是問題所在,但爲什麼它在Caperucita.java中不起作用,而在Ricitos.java中起作用? @ Flynn81 – Whady

+0

@Whady - 背景圖形文件有多大?問題是加載此佈局時系統內存不足。 –

+0

480x3969在Caperucita.java和480x2461在ricitos.java @TedHopp – Whady

0

您需要減少圖形文件的內存影響。從堆棧跟蹤中可以明顯看出,加載caperucita_roja背景時系統內存不足。 (該文件的大小爲480x3969,特別大,在內存中未壓縮將佔用7MB以上的空間,在很多設備上,這是應用程序可用內存總量的很大一部分。)請記住,Android設備在可用性方面受到很大限制記憶。

培訓文章Loading Large Bitmaps Efficiently提供了可以幫助解決這個問題的策略。

相關問題