2016-04-06 10 views
0

Ich habe OnContextItemSelected eingerichtet, um eine Warnung anzuzeigen, wenn der Benutzer versucht, ein Element zu löschen und fragt sie nach Bestätigung. Das Problem ist, dass die "confirmationReceived" Variable auf "true" gesetzt wird, wenn der Code zum ersten Mal ausgeführt wird, ohne dass etwas anderes passiert. Bei der zweiten Ausführung wird das Element gelöscht, bevor der Benutzer bestätigen kann, dass es gelöscht werden soll .Bestätigung vor dem Löschen von einer ArrayList (Android)

onCreateContextMenu

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

    menu.setHeaderTitle("Timetable Item"); 
    menu.add(0, Remove_Item, Menu.NONE, R.string.Remove_Item); 
} 

onContextItemSelected

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    super.onContextItemSelected(item); 
    AlertDialog diaBox = AskRemoveConfirm(); 
    diaBox.show(); 
    switch (item.getItemId()) { 
     case (Remove_Item): { 

      if(confirmationReceived == true) { 
       AdapterView.AdapterContextMenuInfo menuInfo; 
       menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
       int index = menuInfo.position; 
       removeItem(index); 
       confirmationReceived = false; 
       return true; 
      } 
     } 
    } 
    return false; 
} 

AskRemoveConfirm()

private AlertDialog AskRemoveConfirm() 
{ 
    AlertDialog myRemovalDialogBox =new AlertDialog.Builder(this) 
      .setTitle("Confirmation") 
      .setMessage("Are you sure you want to delete this entry?") 
      .setPositiveButton("Delete", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        confirmationReceived = true; 
        dialog.dismiss(); 
       } 

      }) 
      .setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }) 
      .create(); 
    return myRemovalDialogBox; 
} 
+0

mache den remove task im positiven button click ... kurz vor dialog.dismiss() – Sanoop

Antwort

0

somthing tun wie dieses

private AlertDialog AskRemoveConfirm() 
    { 
AlertDialog myRemovalDialogBox =new AlertDialog.Builder(this) 
     .setTitle("Confirmation") 
     .setMessage("Are you sure you want to delete this entry?") 
     .setPositiveButton("Delete", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       confirmationReceived = true; 
       if(confirmationReceived == true) { 
       AdapterView.AdapterContextMenuInfo menuInfo; 
       menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
       int index = menuInfo.position; 
       removeItem(index); 
       confirmationReceived = false; 
       return true; 
       } 
       dialog.dismiss(); 
      } 

     }) 
     .setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }) 
     .create(); 
return myRemovalDialogBox; 
} 
+0

bekomme ich ein "kann das symbol nicht lösen 'artikel'" – Patterrz

+0

dann gib den artikel an die funktion .. Like AskRemoveConfirm (MenuItem item) – Sanoop

+0

und dann AlertDialog übergeben diaBox = AskRemoveConfirm (item); – Sanoop

Verwandte Themen