/ / Inflar menu na caixa de diálogo de alerta - android, android-dialog, android-menu

Inflar menu da caixa de diálogo de alerta - android, android-dialog, android-menu

Estou tentando inflar um menu a partir de um diálogo alternativo. Portanto, quando o usuário pressiona o botão, o código aumenta o menu,

    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();

E aqui está o código para criar o menu de contexto

    @Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {

getMenuInflater().inflate(R.menu.color_menu, menu);
menu.setHeaderTitle("Pick a color");


}

E aqui está o arquivo 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>

O alterdialog aparece, mas quando clico no botão, nada acontece. Qualquer ajuda será apreciada.

Respostas:

0 para resposta № 1

Você está inflando seu menu de contexto, mas vocêtambém tem que definir a ação de cada botão. Adicione o seguinte método à sua atividade (lembre-se de alterar a ação de cada clique, pois esse é apenas um exemplo):

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