Есть ли очевидная причина, по которой оператор if-else не будет обрабатываться в onCLickListener() кнопки?
У меня есть виджет HomeScreen со встроенным действием настроек.
Там есть кнопка, которая должна отключать/включать, если сигналы тревоги отменены/перепланированы (через AlarmMananger и Pending Intends).
Сразу после загрузки приложения на телефон (и в течение нескольких минут после этого) все работает как положено.
Но если через некоторое время я вернусь и нажму кнопку, начальная часть кода onCLickListener будет обработана (я знаю, что отображается Toast), а остальная часть кода — нет (опять же я знаю, что обновления TextView не происходят и второй Toast не отображается).
Остальная часть кода включает в себя Оператор If/Else.
Инструкция if-else относится к состоянию логического значения, которое переключается/переворачивается при каждом нажатии кнопки.
Логическое значение хранится в файле SharedPreferences, который мой код считывает и обновляет соответствующим образом.
Затем файл журнала обновляется для записи изменений.
Дополнительная информация:
В режиме отладки он всегда выполняется так, как ожидалось.
Я также добавил журнал в ветки if/else. Если все работает должным образом, в журнал записывается запись.
Если все работает не так, как ожидалось, в журнал ничего не добавляется.
public void onClick(View v) {
mySavedSettings = mySettingsActivityContext
.getApplicationContext()
.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
mySavedAlarms = settingAlarmsB4 = mySavedSettings.getBoolean("AlarmsEnabled", false);
String alarmStatus;
boolean toggleAlarmsStatus = !mySavedAlarms;
// Update Sharedprefs file
settingAlarmsAfter = toggleAlarmsStatus;
SharedPreferences.Editor editor = mySavedSettings.edit();
editor.putBoolean("AlarmsEnabled",toggleAlarmsStatus);
editor.apply();
Toast.makeText(
WidgetSettings.this,
"1-Alarm Btn Pressed: " + toggleAlarmsStatus,
Toast.LENGTH_SHORT
).show();
if (toggleAlarmsStatus == true) {
// Update text on Button
btnToggleWidgetAlarms.setText("Disable Alarms");
.... code to schedule alarm .....
Toast.makeText(
mySettingsActivityContext,
"Alarms Enabled",
Toast.LENGTH_SHORT
).show();
alarmStatus = "[Alarms ON] ";
} else {
btnToggleWidgetAlarms.setText("Enable Alarms");
ClockWidget.myAlarmManager.cancelAll();
ClockWidget.myAlarmManager2.cancelAll();
alarmStatus = "[Alarms OFF] ";
Toast.makeText(
mySettingsActivityContext,
"All Alarms Cancelled",
Toast.LENGTH_SHORT
).show();
}
// Update TextView on Home Screen Widget
refreshRemoteViews(alarmStatus);
// Update Log file with changes
Intent intentCommonSave = new Intent(mySettingsActivityContext, CommonLogFileSave.class);
intentCommonSave.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intentCommonSave.putExtra("intentDataKey","Settings");
//intentCommonSave.putExtra("intentDataKeyAlarmsB4", settingAlarmsB4);
//intentCommonSave.putExtra("intentDataKeyAlarmsAFTER", toggleAlarmsStatus);
intentCommonSave.putExtra("intentDataKeyLocnB4", placesArray[settingLocationPosnB4]);
intentCommonSave.putExtra("intentDZLocAndTimeDiff", settingDZLocAndTDiffB4);
intentCommonSave.putExtra("intentDataKeySW1B4", settingSW1B4);
intentCommonSave.putExtra("intentDataKeySW2B4", settingSW2B4);
intentCommonSave.putExtra("intentDataKeyAlarmsB4", settingAlarmsB4);
// Update Log file
startActivityForResult(intentCommonSave, 1);
Toast.makeText(
WidgetSettings.this,
"2-Alarm Btn Pressed: " + toggleAlarmsStatus,
Toast.LENGTH_SHORT
).show();
}
});
Подробнее здесь: https://stackoverflow.com/questions/798 ... cklistener
Оператор if/else не обрабатывается в Button onClickListener ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1762322428
Anonymous
Есть ли очевидная причина, по которой оператор if-else не будет обрабатываться в onCLickListener() кнопки?
У меня есть виджет HomeScreen со встроенным действием настроек.
Там есть кнопка, которая должна отключать/включать, если сигналы тревоги отменены/перепланированы (через AlarmMananger и Pending Intends).
Сразу после загрузки приложения на телефон (и в течение нескольких минут после этого) все работает как положено.
Но если через некоторое время я вернусь и нажму кнопку, начальная часть кода onCLickListener будет обработана (я знаю, что отображается Toast), а остальная часть кода — нет (опять же я знаю, что обновления TextView не происходят и второй Toast не отображается).
Остальная часть кода включает в себя Оператор If/Else.
Инструкция if-else относится к состоянию логического значения, которое переключается/переворачивается при каждом нажатии кнопки.
Логическое значение хранится в файле SharedPreferences, который мой код считывает и обновляет соответствующим образом.
Затем файл журнала обновляется для записи изменений.
Дополнительная информация:
В режиме отладки он всегда выполняется так, как ожидалось.
Я также добавил журнал в ветки if/else. Если все работает должным образом, в журнал записывается запись.
Если все работает не так, как ожидалось, в журнал ничего не добавляется.
public void onClick(View v) {
mySavedSettings = mySettingsActivityContext
.getApplicationContext()
.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
mySavedAlarms = settingAlarmsB4 = mySavedSettings.getBoolean("AlarmsEnabled", false);
String alarmStatus;
boolean toggleAlarmsStatus = !mySavedAlarms;
// Update Sharedprefs file
settingAlarmsAfter = toggleAlarmsStatus;
SharedPreferences.Editor editor = mySavedSettings.edit();
editor.putBoolean("AlarmsEnabled",toggleAlarmsStatus);
editor.apply();
Toast.makeText(
WidgetSettings.this,
"1-Alarm Btn Pressed: " + toggleAlarmsStatus,
Toast.LENGTH_SHORT
).show();
if (toggleAlarmsStatus == true) {
// Update text on Button
btnToggleWidgetAlarms.setText("Disable Alarms");
.... code to schedule alarm .....
Toast.makeText(
mySettingsActivityContext,
"Alarms Enabled",
Toast.LENGTH_SHORT
).show();
alarmStatus = "[Alarms ON] ";
} else {
btnToggleWidgetAlarms.setText("Enable Alarms");
ClockWidget.myAlarmManager.cancelAll();
ClockWidget.myAlarmManager2.cancelAll();
alarmStatus = "[Alarms OFF] ";
Toast.makeText(
mySettingsActivityContext,
"All Alarms Cancelled",
Toast.LENGTH_SHORT
).show();
}
// Update TextView on Home Screen Widget
refreshRemoteViews(alarmStatus);
// Update Log file with changes
Intent intentCommonSave = new Intent(mySettingsActivityContext, CommonLogFileSave.class);
intentCommonSave.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intentCommonSave.putExtra("intentDataKey","Settings");
//intentCommonSave.putExtra("intentDataKeyAlarmsB4", settingAlarmsB4);
//intentCommonSave.putExtra("intentDataKeyAlarmsAFTER", toggleAlarmsStatus);
intentCommonSave.putExtra("intentDataKeyLocnB4", placesArray[settingLocationPosnB4]);
intentCommonSave.putExtra("intentDZLocAndTimeDiff", settingDZLocAndTDiffB4);
intentCommonSave.putExtra("intentDataKeySW1B4", settingSW1B4);
intentCommonSave.putExtra("intentDataKeySW2B4", settingSW2B4);
intentCommonSave.putExtra("intentDataKeyAlarmsB4", settingAlarmsB4);
// Update Log file
startActivityForResult(intentCommonSave, 1);
Toast.makeText(
WidgetSettings.this,
"2-Alarm Btn Pressed: " + toggleAlarmsStatus,
Toast.LENGTH_SHORT
).show();
}
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79809666/if-else-statement-not-processing-in-button-onclicklistener[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия