0

メニューからゲームを開始したい。Eclipse には 2 つのプロジェクトがあり、1 つはメニュー、もう 1 つは実際のゲームです。どちらもSimpleBaseGameActivityベースとして使用しています。ネット上の例は、以下のようなことをします。具体的には、インテントを作成し、そのインテントでアクティビティを開始します。以下のコードはNoClassDefFoundErroronを与えMyGame.classます。MyGame.class存在しないため、これは当然のことですが、むしろ存在MyGame.apkします。どうすればいいですか?

public boolean onMenuItemClicked(final MenuScene pMenuScene,
        final IMenuItem pMenuItem,
        final float pMenuItemLocalX,
        final float pMenuItemLocalY) {

    switch(pMenuItem.getID()) {
        case MENU_PLAY:
        MainActivity.this.runOnUiThread(new Runnable() {
            public void run() {
                Intent intent = new Intent(getApplication(), MyGame.class);
                startActivity(intent);
                finish();       
            }
        });
        return true;
    }
}

- - - 編集

menu itemクリックするとゲームが開始されるという点で、すべてが 1 つのプロジェクトで動作しています。ただし、「戻る矢印」をクリックすると、 に戻らずmenu、オペレーティング システムに戻ります。ファイル内のアクティビティ定義は次のmanifestとおりです。これは正しく見えますか?

<activity
    android:name=".MainActivity"
    android:label="@string/title_activity_main" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name="com.mygame.MyGame"
    android:label="@string/mygame_activity"
    android:parentActivityName="com.menu.MainActivity" >
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.menu.MainActivity" />
</activity>

これを に追加しましたMyGameが、呼び出されません:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}

--- 編集 この行を削除する必要がありました:

MainActivity.this.finish();
4

3 に答える 3

4

タグのマニフェストに最初に挿入します

<application>...</application>

このタグ:

 <activity
        android:name=".MyGame"
        android:label="MygameName" >
    </activity>

コードを変更します。

 public boolean onMenuItemClicked(final MenuScene pMenuScene,
        final IMenuItem pMenuItem,
        final float pMenuItemLocalX,
        final float pMenuItemLocalY) {

switch(pMenuItem.getID()) {

case MENU_PLAY:
MainActivity.this.runOnUiThread(new Runnable() {
    public void run() {

        Intent intent = new Intent(MainActivity.this, MyGame.class);
        startActivity(intent);
        MainActivity.this.finish();

    }
});
return true;
于 2012-12-13T02:01:36.653 に答える
2

MyGameはアクティビティである必要があり、Android.manifestでアクティビティとして言及されている必要があります。

http://developer.android.com/training/basics/firstapp/starting-activity.html

于 2012-12-12T14:39:26.150 に答える
-1

関数「finish()」への呼び出しを削除してください。その後、親アクティビティに戻ります。

于 2014-08-05T12:32:59.410 に答える