Оператор if/else не обрабатывается в Button onClickListenerAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Оператор if/else не обрабатывается в Button onClickListener

Сообщение 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();
}
});


Подробнее здесь: https://stackoverflow.com/questions/798 ... cklistener
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»