我想从菜单开始游戏。在 Eclipse 中,我有 2 个项目,一个是菜单,另一个是实际的游戏。两者都使用 SimpleBaseGameActivity 作为基础。网上的例子做了如下所示的事情。特别是,它创建一个 Intent 并以该 Intent 启动一个 Activity 。下面的代码在 MyGame.class
上给出了 NoClassDefFoundError
。这并不奇怪,因为 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;
}
}
-----编辑
我已经让它工作了,所有内容都在一个项目中,当单击菜单项
时,游戏就会开始。但是,当单击“后退箭头”时,它不会返回到菜单
,而是返回到操作系统。 manifest
文件中的 Activity 定义如下。这看起来正确吗?
<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();
最佳答案
首先插入Manifest中的标签
<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;
关于java - andengine 从菜单开始游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13841995/