2011-06-30 13 views
0

EDITモデレーター、この質問を削除してください。問題は、実際の方向変更ではなく、私の背景イメージサイズにあります。明示的な理由がないため方向変更後にアプリケーションがクラッシュする


私はこの質問/問題は、用語のこのシンプルで回答されているとは思わないME-でご負担ください。

私は、res/layout-landとres/layout-portに保存されているXMLファイルと同じ名前で、それぞれにいくつかのアクティビティと2つのレイアウトリソースを持つアプリケーションを持っています。

問題は、Nexus One(Android 2.3を使用しています)でアプリケーションを起動するとアプリケーションが問題なく起動しますが、画面を回転させようとすると(向きを変える)、クラッシュします。明確にするために、私が電話ランドスケープスタイルを保持するアクティビティを開始すると、アプリケーションは私にres/layout-landリソースレイアウトを示し、逆も同様ですが、実行時に方向を変更しようとするとクラッシュします。

2つのXMLレイアウトがあり、-portと-landのフォルダに保存されている場合、Androidはアクティビティを破棄して、同じ名前で別のレイアウトで再作成する必要があります。

ここに私のマニフェストがあります。必要に応じてさらにコードを貼り付けてもよろしいですか?ここで

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="dominion.game" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="9" /> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" debuggable="true"> 
     <activity android:name="dominion.game.DominionMenu" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name="dominion.game.CreateMenu" 
        android:label="@string/app_name"> 
     </activity> 
     <activity android:name="dominion.game.AdvancedMenu" 
        android:label="@string/app_name"> 
     </activity> 
     <activity android:name="dominion.game.ShuffleResult" 
        android:label="@string/app_name"> 
     </activity> 
    </application> 
</manifest> 

はのonCreateメソッドの始まりです:

 @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mainmenu); 
    //...Lots of onClick listeners for the 4 buttons... 
    } 

それの残りの部分はアクションリスナーであり、各ボタンがクリックされた場合、それは別のアクティビティへの意図を開始します。メインメニューのレイアウトは少なくとも理論的にはres/layout-land/mainmenu & res/layout-port/mainmenuに対応しています。

私はDDMSエラーを見ましたが、エラーのあるコードのどこかにリンクがありません。

EDIT:リクエストに応じて、エラー・ログ(力の近くまで赤いもののすべて) - 本質的に

07-01 00:23:41.082: ERROR/dalvikvm-heap(11182): 9864000-byte external allocation too large for this process. 
07-01 00:23:41.109: ERROR/GraphicsJNI(11182): VM won't let us allocate 9864000 bytes 
07-01 00:23:41.109: DEBUG/dalvikvm(11182): GC_FOR_MALLOC freed <1K, 52% free 2598K/5379K, external 19819K/19819K, paused 15ms 
07-01 00:23:41.117: DEBUG/AndroidRuntime(11182): Shutting down VM 
07-01 00:23:41.117: WARN/dalvikvm(11182): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182): FATAL EXCEPTION: main 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182): java.lang.RuntimeException: Unable to start activity ComponentInfo{dominion.game/dominion.game.DominionMenu}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:2796) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.ActivityThread.access$1600(ActivityThread.java:117) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:932) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.os.Looper.loop(Looper.java:123) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at dalvik.system.NativeStart.main(Native Method) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.LayoutInflater.inflate(LayoutInflater.java:386) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.Activity.setContentView(Activity.java:1657) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at dominion.game.DominionMenu.onCreate(DominionMenu.java:28) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  ... 12 more 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182): Caused by: java.lang.reflect.InvocationTargetException 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at java.lang.reflect.Constructor.constructNative(Native Method) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  ... 22 more 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.Bitmap.nativeCreate(Native Method) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.Bitmap.createBitmap(Bitmap.java:477) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.Bitmap.createBitmap(Bitmap.java:444) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:349) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:463) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:326) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.content.res.Resources.loadDrawable(Resources.java:1709) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.View.<init>(View.java:1951) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.View.<init>(View.java:1899) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.view.ViewGroup.<init>(ViewGroup.java:286) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  at android.widget.LinearLayout.<init>(LinearLayout.java:120) 
07-01 00:23:41.128: ERROR/AndroidRuntime(11182):  ... 25 more 
07-01 00:23:41.144: WARN/ActivityManager(113): Force finishing activity dominion.game/.DominionMenu 

、私の質問は:自動画面の向きが変わるためには取るために必要な手順は何ですか働く?私はそれらすべてをやったと思った...

何か助けや提案がありがとうございました!クラッシュを停止し、その代わりに他のレイアウトに切り替える、それだけ異なる向きで同じレイアウトを使用


@Rahul Sharma- 。

@Asynkronos 私は2.3ではなく2.1ですが、それは確かに考慮すべき面白いバグです。私はそれらのオブジェクトを使用しているとは思わない。

皆さんは迷惑をかけることがありますが、問題は私の背景イメージが30in x 30inに近いほど巨大だったことです。だから、私はそれを約7x7インチまで縮尺しました。問題はありません。

+0

**クラッシュ**は、十分なエラーの説明ではありません。スタックトレースを送信します。 – mibollma

+0

クラッシュすると、* Force-Close *ポップアップボックスが表示されますか?その場合は、logcatエラーが発生することが保証されています。コマンドラインで** adb logcat **を実行してエラーを確認する必要があるかもしれませんが、間違いなくエラーが発生します問題。 – Femi

答えて

0

オリエンテーションの変更などでアクティビティが作成されていないことを確認してください。そのアクティビティのライフサイクルを確実にする

4

は入れ

アンドロイド:configChanges = "オリエンテーション| keyboardHidden" 例えば、あなたの活動タグ

の全てで姿勢変化にクラッシュの発生を克服するためのアプリケーションタグでconfigChanges =「画面サイズkeyboardHidden | |オリエンテーション」:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="dominion.game" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="9" /> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" debuggable="true"> 
     <activity android:name="dominion.game.DominionMenu" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name="dominion.game.CreateMenu" 
       android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> 
     </activity> 
     <activity android:name="dominion.game.AdvancedMenu" 
       android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> 
     </activity> 
     <activity android:name="dominion.game.ShuffleResult" 
       android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> 
     </activity> 
    </application> 
</manifest> 

これはマニフェスト挿入アンドロイドで:-)

+0

私のための簡単で簡単な修正、ありがとう! – ryvianstyron

0

に役立ちます希望は。これは私のアプリケーションに役立っています。

関連する問題