读书人

android MENU开发有关问题

发布时间: 2012-09-15 19:09:28 作者: rapoo

android MENU开发问题
strings.xml:


<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World</string>
<string name="app_name">Hello World</string>
<string name="label">您选择为</string>
<string name="gender">性别</string>
<string name="male">男</string>
<string name="female">女</string>
<string name="hobby">爱好</string>
<string name="hobby1">游泳</string>
<string name="hobby2">唱歌</string>
<string name="hobby3">写JAVA程序</string>
<string name="ok">确定</string>
</resources>








XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:editable="false"
android:cursorVisible="false"
android:text="@string/label"
></EditText>
</ScrollView>
</LinearLayout>







代码部分:




package com.msn.cn;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.SubMenu;
import android.widget.EditText;

public class mun extends Activity {
final int MENU_GENDER_MALE=0;
final int MENU_GENDER_FEMALE=1;
final int MENU_HOBBY1=2;
final int MENU_HOBBY2=3;
final int MENU_HOBBY3=4;
final int MENU_OK=5;
final int MENU_GENDER=6;
final int MENU_HOBBY=7;
final int GENDER_GROUP=0;
final int HOBBY_GROUP=1;
final int MAIN_GROUP=2;
MenuItem[] miaHobby=new MenuItem[3];//爱好菜单组
MenuItem male=null;//男性性别菜单项

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

}
public boolean onCeateOptionsMenu(Menu menu){

SubMenu subMenuGender = menu.addSubMenu(MAIN_GROUP,MENU_GENDER,0,R.string.gender);
subMenuGender.setIcon(R.drawable.gender);
subMenuGender.setHeaderIcon(R.drawable.gender);
male = subMenuGender.add(GENDER_GROUP, MENU_GENDER_MALE, 0, R.string.male);
male.setChecked(true);
subMenuGender.add(GENDER_GROUP, MENU_GENDER_FEMALE, 0, R.string.female);

subMenuGender.setGroupCheckable(GENDER_GROUP, true,true);


SubMenu subMenuHobby = menu.addSubMenu(MAIN_GROUP,MENU_HOBBY,0,R.string.hobby);
subMenuHobby.setIcon(R.drawable.hobby);
miaHobby[0]=subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY1, 0, R.string.hobby1);
miaHobby[1]=subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY2, 0, R.string.hobby2);
miaHobby[2]=subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY3, 0, R.string.hobby3);


miaHobby[0].setCheckable(true);
miaHobby[1].setCheckable(true);
miaHobby[2].setCheckable(true);

MenuItem ok=menu.add(GENDER_GROUP+2,MENU_OK,0,R.string.ok);
OnMenuItemClickListener lsn=new OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item) {
appendStateStr();
return true;
}
};
ok.setOnMenuItemClickListener(lsn);

ok.setAlphabeticShortcut('o');

return true;
}
public boolean onOptionsItemSlected(MenuItem mi){
switch (mi.getItemId()){
case MENU_GENDER_MALE:
case MENU_GENDER_FEMALE:
mi.setCheckable(true);
appendStateStr();
break;
case MENU_HOBBY1:
case MENU_HOBBY2:
case MENU_HOBBY3:
mi.setChecked(!mi.isCheckable());
appendStateStr();
break;



}
return true;

}
public void appendStateStr(){
String result="您选择的性别为";
if(male.isChecked()){
result=result+"男";

}
else{
result=result+"n女";

}
String hobbyStr="";
for(MenuItem mi:miaHobby){
if(mi.isChecked()){
hobbyStr=hobbyStr+mi.getTitle()+",";
}

}
if(hobbyStr.length()>0){
result=result+"您的爱好为:"+hobbyStr.substring(0,hobbyStr.length()-1)+".\n";

}else{
result=result+".\n";

}
EditText et=(EditText)mun.this.findViewById(R.id.EditText01);
et.append(result);

}
}



有2张PNG图标问题不大
我的问题是我点击模拟器中的menu时,缺调不出来选项菜单。程序没错误 但找不到到底问题在什么地方。 不好意思 代码没有注释,高手都能看懂这么简单的代码。送分!

[解决办法]
public boolean onCeateOptionsMenu(Menu menu){

public boolean onCreateOptionsMenu(Menu menu){
你觉得有差别吗?
[解决办法]
public boolean onCeateOptionsMenu//书写错误(Menu menu){

SubMenu subMenuGender = menu.addSubMenu(MAIN_GROUP,MENU_GENDER,0,R.string.gender);
subMenuGender.setIcon(R.drawable.gender);

读书人网 >Android

热点推荐