#android #listview #onbackpressed
#Android #listview #onbackpressed
Вопрос:
У меня есть представление списка, которое содержит список продуктов, и при нажатии на элемент списка открываются сведения о списке. Элемент списка содержит такие значения, как вес брутто, вес нетто и т.д.
В верхней части страницы сведений об элементе списка у меня есть перекрестная кнопка вместо кнопки «Назад», при нажатии на которую откроется диалоговое окно с надписью «Вы хотите сохранить изменения» и кнопкой «Да» или «нет».
При нажатии «ДА» я могу сохранить изменения в представлении списка, но при нажатии «НЕТ» я не могу отменить изменения.
Ниже приведен код для отображения диалогового окна:
@Override
public boolean onBackPressed() {
final AlertDialog alert = new AlertDialog.Builder(getContext()).create();
alert.setMessage(getContext().getString(R.string.save_activity));
alert.setCancelable(false);
alert.setButton(getContext().getString(R.string.strYes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
saveAndClose();
}
});
alert.setButton2(getContext().getString(R.string.strNo), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
alert.dismiss();
((Activity)getContext()).finish();
}
});
alert.show();
return true;
}
Для того же я попытался создать список массивов с другой ссылкой и попытался установить значения.
Но, похоже, это не работает.
Пожалуйста, предоставьте любое решение для того же.
Комментарии:
1. Укажите ваше требование
2. Чего вы ожидали? Вы только отклоняете предупреждение и завершаете текущую активность, когда пользователь нажимает «Нет». Кода отмены нет. Конечно, вы не можете отменить изменения.
3. @Джошуа, при нажатии перекрестной кнопки всплывает диалоговое окно, в котором есть ДА или НЕТ. При нажатии YES введенные значения должны сохраняться в списке, а при нажатии NO изменения не должны сохраняться, а предыдущие значения должны отображаться при открытии сведений о списке из списка.
Ответ №1:
Есть простой способ добиться этого
допустим, у вас есть класс продукта
public class Product{
private boolean currentState;
private boolean previosState;
}
Сохраняйте текущее состояние, когда пользователь нажимает на крестик, но не трогайте предыдущее состояние.
Теперь при выборе «да» или «нет» при нажатии «Да» учитывается текущее состояние, а при нажатии «Нет» учитывается предыдущее состояние.
Комментарии:
1. спасибо за быстрый ответ, не могли бы вы подробнее рассказать.
2. @StackQuest сделка проста, вы сохраняете состояние текущего состояния и не трогаете предыдущее состояние. Поэтому, когда пользователь нажимает YES, вы учитываете выбор текущего состояния, а когда НЕТ, то previousState ничего не меняет в этой переменной, и вы можете легко получить эффект ОТМЕНЫ.
3. спасибо, но то же самое я задал в вопросе, как восстановить предыдущее состояние моего представления списка.? Поскольку я новичок в Android, я знаю поведение просмотра списка по умолчанию при нажатии назад, но не знаю, как сохранить предыдущее состояние, пожалуйста, помогите
4. Я имею в виду, как реализовать предыдущее состояние, у вас есть какой-нибудь пример.?