我想从菜单开始游戏。在Eclipse中,我有2个项目,一个是菜单,另一个是实际游戏。两者都以SimpleBaseGameActivity
为基础。网上的例子做如下的事情。特别是,它创建一个intent并使用该intent启动一个活动。以下代码在NoClassDefFoundError
上显示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();
答案 0 :(得分:4)
首先在标签中的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;
答案 1 :(得分:2)
MyGame必须是一项活动,必须在Android.manifest中将其作为一项活动提及。
http://developer.android.com/training/basics/firstapp/starting-activity.html
答案 2 :(得分:-1)
请删除对“finish()”功能的调用,然后它会将您带回到父活动。