从警报对话框中提取菜单

时间:2015-07-21 17:24:21

标签: android android-dialog android-menu

我试图从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显示,但是当我点击按钮时没有任何反应。 任何帮助将不胜感激。

1 个答案:

答案 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);
}