显示重复的菜单项和一个不显示的重复菜单项;崩溃也是如此

时间:2012-12-22 21:53:49

标签: android

好的,所以我在开发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);





}


}

1 个答案:

答案 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>