我试图从alterdialog中膨胀一个菜单,所以当用户按下按钮时,代码会使菜单膨胀,
alert.setTitle("Name"); //Set Alert dialog title here
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
final EditText input = new EditText(this);
final Button pencolor = new Button(this);
pencolor.setText("Select Pen Color");
pencolor.setPadding(0, 30, 0, 30);
registerForContextMenu(pencolor);
ll.addView(input); ll.addView(pencolor);
alert.setView(ll);
alter.create();
alert.show();
以下是创建上下文菜单的代码
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.color_menu, menu);
menu.setHeaderTitle("Pick a color");
}
这是color_menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_red" android:title="Red" />
<item android:id="@+id/menu_green" android:title="Green"/>
<item android:id="@+id/menu_blue" android:title="Blue"/>
</menu>
alterdialog显示,但是当我点击按钮时没有任何反应。 任何帮助将不胜感激。
答案 0 :(得分:0)
您正在对上下文菜单进行充气,但您还必须定义每个按钮的操作。将以下方法添加到您的活动中(记住要更改每次点击的操作,因为这只是一个示例):
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle().equals("Red")) {
Toast.makeText(this, "Action 1 invoked", Toast.LENGTH_SHORT).show();
} else if (item.getTitle().equals("Green")) {
Toast.makeText(this, "Action 2 invoked", Toast.LENGTH_SHORT).show();
} else (item.getTitle().equals("Blue")) {
Toast.makeText(this, "Action 3 invoked", Toast.LENGTH_SHORT).show();
}
return super.onContextItemSelected(item);
}