0

この問題を解決できません。私は実際にこれを理解していません。ゲームを作っています。1 つのレベルの 1 つのアクティビティには約 1000 行のコードがあるため、全体を入力することはしません。しかし、問題は次のようになります。アクティビティを開始しているスプラッシュ アクティビティがあり、メニュー アクティビティを開始して、それ自体を閉じます。次に、最初のレベルのアクティビティを [メニューから、finish() でメニュー アクティビティを閉じます] 開き、[このレベルのアクティビティ] が終了したら、別のアクティビティを開始します。しかし、問題が発生します。すべてが 3 日前まで機能していましたが、現在、アクティビティを開こうとするとクラッシュします。いくつかのコード行を覚えて編集できる場合は、ゲームにビットマップをいくつか追加しました。私のレベルのこのフラグメントはそれを閉じており、メニューアクティビティを開くと想定されています:

canvas.drawBitmap(game_over, 0, 0, null);
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    soSelCarIgn.release();
                    soSelCarRun.release();
                    Intent menu=new Intent("com.ntii.game.adam.Menu");
                    startActivity(menu);
                    finish();

というわけで、2つ前にゲームを起動したときに問題なく開いていたアクティビティを開こうとします。レベル自体を除く、他のアクティビティで発生します。(つまり、レベルでレベルを開こうとすると、最初のものを終了()して動作します)。アクティビティを開始している行を削除すると、レベルが自動的に閉じられ、エラーなしですべて問題ありません。

Androidマニフェスト:

<activity
        android:name=".Menu"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait"
        android:noHistory="true" >
        <intent-filter>
            <action android:name="com.ntii.game.adam.Menu" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

「android:noHistory="true」という行があるのは、何らかの方法でこのアクティビティを閉じようとしたためです。エラーが発生します: http://img839.imageshack.us/img839/7426/wtfvh.jpg

最近追加したビットマップは小さいサイズの jpeg です。さらに、コードを最適化してクリーンアップしようとしましたが、他のビットマップをいくつか削除しましたが、まだ機能しません。このアクティビティは、finish() の後で閉じていないようで、メニュー アクティビティを開こうとすると、十分なメモリがありません。アイデア、手がかりはありますか?

誰かがこのアクティビティの実行順序全体を理解していない場合:

スプラッシュ --> メニュー --> レベル - 開こうとしましたが、クラッシュが発生しました -> メニュー

4

2 に答える 2

1

問題はここにあります:

Intent menu=new Intent("com.ntii.game.Menu");

使用する

Intent menu=new Intent("com.ntii.game.adam.Menu");

また

Intent menu=new Intent(this, com.ntii.game.adam.Menu.class);
于 2013-01-12T20:22:47.217 に答える
0

これを試して:

Intent menu = new Intent(currentClass.this, Menu.class);

startActivityForResult(menu,0);

その理由は、参照したいクラスの名前が「Menu」であるため、「com.ntii.game.adam.Menu」というアクション名は必要ありません。** currentClass は、アプリ内の現在のクラスが何であるかを参照するだけです。それが何であるかがわからないためです。

于 2013-01-12T22:41:54.060 に答える