Я пытаюсь запомнить флажок в диалоге, но в сравнении помню == false переменная помнить еще не изменила ее значение. В цикле повторяется столько раз, сколько размер lelements_tmp перед вызовом showDialogSameFile(), поэтому я также не могу использовать переменную, помните в цикле. Как мне это сделать? Заранее спасибо.Помните галочку в диалоговом окне
private boolean remember = false;
// in the program
// add files to List lelements_tmp
while (i < lelements_tmp.size()) {
File fto = new File(lelements_tmp.get(i).getFile());
String to = null;
try {
to = fto.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
if (fto.exists()) {
showDialogSameFile(fto, to, i);
i++;
continue;
}
thread(i);
i++;
}
private void showDialogSameFile(File f, String to, final int i) {
TextView title = null;
if (f.isDirectory())
title = this.getTitle("The directory " + to + " already exists. Do you want to replace the contents?");
else if (f.isFile())
title = this.getTitle("The file " + to + " already exists. Do you want to replace it?");
String[] item = {"Apply to all"};
AlertDialog ad = new AlertDialog.Builder(context)
.setCustomTitle(title)
.setMultiChoiceItems(item, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
if (isChecked)
remember = true;
}
})
.setPositiveButton("Aceptar",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
thread(i);
}
})
.setNegativeButton("Cancelar",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.create();
if (remember == false)
ad.show();
}
Вау, вы смешанный порядок исполнения там, вы никогда не увидите слишком много, помните, что являетесь истинным таким образом. Я предполагаю, что вы пытаетесь использовать это после отклонения диалога? Добавить слушателя в диалоговом окне закрыть, а затем спросить, является ли помнить false или нет. –