我有一个简单的警报对话框的代码,看起来像这样。
这是我的代码:
private boolean toggle;
//an onCreate method here
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.deleteContact:
if (selectedContactIndex == -1){
Context context = getApplicationContext();
CharSequence text = "Please select a contact to delete!";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
return true;
}
AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);
myAlertDialog.setTitle(" Confirm Contact Deletion");
myAlertDialog.setMessage("Are you sure you want to delete " + Contact.contactList.get(selectedContactIndex).getFullName() + "?");
myAlertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
toggle = true;
}});
myAlertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
toggle = false;
}});
myAlertDialog.show();
System.out.println(toggle);
if (toggle) {
Contact.contactList.remove(selectedContactIndex);
for (int i = selectedContactIndex; i < Contact.contactList.size(); i++){
Contact.contactList.get(i).setContactNumber(i);
}
Contact.totalContacts--;
selectedContactIndex = -1;
contactsView.invalidateViews();
}
}
所以我这样做的方式是,我有一个名为切换的布尔值。如果他们单击“是”,则布尔值设置为 true,并且将执行 if 语句,该语句实际上删除了联系人。我使用了 system.out.print 并检查了日志猫,显然即使在我单击“是”按钮后切换变量也是错误的。
我的一个假设是:布尔值的默认值为 false,因此可能 onClick 方法甚至没有分配任何东西来切换。但我不知道如何解决这个问题。
任何帮助,将不胜感激。
编辑:感谢您的回答,我将联系人删除逻辑放在了积极按钮的 onClick 方法中,它的工作方式就像我想要的那样!我从中得到的主要内容是意识到 android 并不总是线性执行。