我正在尝试打开一个警告对话框,其中包含一个列表,供用户选择一些选项,但对话框将从选项菜单项打开。我已经包含了选项和代码菜单的代码。
public void OnOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case SECTION:
showDialogMenu();
new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
showDialogMenu();
Log.d("Dialog used.","here");
}
}; break;
}
}
public void showDialogMenu(){
Log.d("showDialogMenu()", "Method was called.");
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.dialogueTitle);
builder.setPositiveButton("Melee", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
num=0;
whichImage(num);
}
});
builder.setPositiveButton("Pistols", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
num=27;
whichImage(num);
}
});
builder.setPositiveButton("Shotguns", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
num=38;
whichImage(num);
}
});
builder.setPositiveButton("Rifles", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
num=43;
whichImage(num);
}
});
builder.setPositiveButton("Sub-Machine Guns", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
num=58;
whichImage(num);
}
});
builder.setPositiveButton("Light Machine Guns", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
num=68;
whichImage(num);
}
});
builder.setPositiveButton("Sniper Rifles", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int item) {
num=72;
whichImage(num);
}
});
builder.show();
}
我确保对话框有show()方法,我认为这是以前的问题,但是当点击菜单项时,什么都没有出现。非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
轻松的家伙......没有人认为你是愚蠢的。我不知道SECTION
是什么,但您应该将其更改为您在菜单中提供id的任何内容xml
<item android:id="MyItem"
然后在onOptionsItemSelected()
public void OnOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.MyItem:
showDialogMenu();
break;
将您的showDialog()
方法移到此处以外,以便它可以恢复。
public void showDialogMenu(){
Log.d("Dialog used.","here");
}
在这里使用switch/case
很好,因为您可能希望在某些时候添加更多项目
这应该可以帮助您解决当前的问题。但是你需要检查使用MultiChoice Dialog来做你正在做的事情