Estoy usando el siguiente código para el menú contextual y, a continuación, si el usuario decide eliminar un cuadro de diálogo de masaje aparecerá.

infos.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){
//@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Context Menu");
menu.add(0, CONTEXT_EDIT, 0, "Edit Item");
menu.add(0, CONTEXT_DELETE, 1, "Delete Item");
}
});
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
final Long _id = menuInfo.id;
//selected_row = menuInfo.position;
//To get the id of the clicked item in the list use menuInfo.id
switch (item.getItemId()) {
case CONTEXT_EDIT:
addEditRes(_id);
break;
case CONTEXT_DELETE:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to delete?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
infoDataHelper.deleteRes(_id);  
model = infoDataHelper.getCursor(addType);
adapter.changeCursor(model);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();   
alert.show();
break;
default:
return super.onContextItemSelected(item);
}
adapter.notifyDataSetChanged();
return true;
}

Pero tan pronto estoy eligiendo la eliminación, se está dando el siguiente error.

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

¿Cuál es el problema en mi código?

OriginalEl autor dev_android | 2011-03-03

4 Comentarios

  1. 29

    Creo que el problema podría estar en esta línea:

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    Intentar modificar a:

    AlertDialog.Builder builder = new AlertDialog.Builder(MyActivityName.this);

    Sustitución de MyActivityName con el nombre de su actividad.

    Hizo que corregir el error?

    Fijo que es para mí! Gracias 🙂

    OriginalEl autor Joakim Berglund

  2. 6

    Debe ser
    AlertDialog.Builder builder = new AlertDialog.El generador de este.getParent());

    Debido a que la actividad se encuentra en un tabactivity dentro de otro tabactivity.

    OriginalEl autor dev_android

  3. 6

    Estaba recibiendo el mismo error.
    He cambiado

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    a

     AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

    Sus funcionando bien ahora. Gracias.

    OriginalEl autor Geecat

  4. 0

    Kotlin

    Cambio de esto:

    val builder: AlertDialog.Builder = AlertDialog.Builder(this)

    a

    val builder: AlertDialog.Builder = AlertDialog.Builder(this@MainActivity)

    OriginalEl autor Nelson Almendra

Dejar respuesta

Please enter your comment!
Please enter your name here