好的,所以我在开发Android应用程序时做得很好,但后来遇到了这个问题。我尝试将另一个菜单项设置为选项菜单,我之前从未遇到任何问题,但现在,如问题中所述,其中一个项目显示两次,另一个项目根本没有显示,然后当我进入Credits活动它崩溃了。下面是res / menu / menu.xml和MainActivity.java(第一个)的代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu); return true; }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.quit:
return true;
case R.id.new_game:
Intent intent = new Intent(this, New_Game.class);
startActivity(intent);
return true;
case R.id.visit_site:
Intent inten = new Intent(this, Site.class);
startActivity(inten);
return true;
case R.id.stay:
Intent inte = new Intent(this, MainActivity.class);
startActivity(inte);
return true;
case R.id.credits:
Intent i = new Intent(this, Credits.class);
startActivity(i);
return true;
case R.id.exit:
Intent in = new Intent(Intent.ACTION_MAIN);
in.addCategory(Intent.CATEGORY_HOME);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(in);
finish();
System.exit(0);
return true;
}return false;
}
这是XML菜单
<menu
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/visit_site"
android:title="Visit the Medieval Site!" />
<item
android:id="@+id/quit"
android:title="Exit">
<item
android:id="@+id/credits"
android:title="Credits"
/>
<menu
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/stay"
android:title="Cancel"
/>
<item
android:id="@+id/exit"
android:title="Exit" />
</menu>
</item>
<item
android:id="@+id/new_game"
android:title="Start the Game"
/>
</menu>
我将学分设置为Java文件中的正常“Hello World”活动以下是此活动的Android Manifest声明。我将这包括在错误就在那里的情况下。
<activity android:name=".Credits"
android:label="Application Credits"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="landscape" >
</activity>
如果有人可以请告诉我我搞砸了哪里以及我需要做些什么呢。
以下是Sam在下面提到的Credits.java
package com.apw.games.rpg.medieval;
import android.app.*;
import android.os.*;
import android.view.*;
public class Credits extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.credits);
}
}
答案 0 :(得分:1)
您的菜单布局不正确。问题是“Credits”,您不能拥有嵌套项:<item><item></item></item>
。将“Credits”移动到子菜单中或将其移动到常规菜单中:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/visit_site"
android:title="Visit the Medieval Site!"/>
<item
android:id="@+id/quit"
android:title="Exit">
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/stay"
android:title="Cancel"/>
<!-- I moved credits here -->
<item
android:id="@+id/credits"
android:title="Credits"/>
<item
android:id="@+id/exit"
android:title="Exit"/>
</menu>
</item>
<item
android:id="@+id/new_game"
android:title="Start the Game"/>
<!-- Or you can move credits here -->
</menu>
请注意,图层为<menu> <item> <menu> <item> </item> </menu> </item> </menu>
。