0

我想从菜单开始游戏。在 Eclipse 中,我有 2 个项目,一个带有菜单,另一个是实际游戏。两者都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点击时,游戏就开始了。但是,当单击“后退箭头”时,它不会返回到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 回答