Пробовал использовать ToggleButton
, чтобы действовать как элемент закладки в моем приложении. Я использую это в первый раз. Я объявил мою кнопку переключения под onCreateView()
, как показано ниже:android toggle button state always true
bmark = (ToggleButton) v.findViewById(R.id.bmark);
bmark.setChecked(false);
Я пытаюсь просто переключить состояние и показать Toast
сообщений! Я попытался ниже:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
bmark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean status;
if (bmark.isChecked()) status = true;
else status = false;
Log.w("Bmark status",String.valueOf(status));
if (status) {
bmark.setChecked(false);
Log.w("Bmark after true",String.valueOf(bmark.isChecked()));
Toast.makeText(getActivity(), "Bookmark removed!", Toast.LENGTH_SHORT).show();
} else {
bmark.setChecked(true);
Log.w("Bmark after false",String.valueOf(bmark.isChecked()));
Toast.makeText(getActivity(), "Post Bookmarked..!", Toast.LENGTH_SHORT).show();
}
}
});
Каждый раз, когда я нажимаю кнопку, состояние сначала прочитать «истинный», хотя я поставил его на «ложь». После того, как я звоню setChecked(false)
, он также становится ложным. Но когда я снова нажимаю на него, он снова читает «true», а вместо «false»
Я не знаю, почему это происходит так. Я просто хочу переключать его каждый раз, когда я нажимаю на него. Pls помогите мне! Заранее спасибо :)
FYI принятый ответ не является оптимальным решением, так как он требует обработки булевского флага для отслеживания состояния. – earthw0rmjim
статус в ответе является дополнительным, потому что он был в оригинальном коде, может быть, он используется в другом месте, поэтому не имеет ничего оптимального или нет. –
@MaciejSikora Как он используется в другом месте, если это локальная переменная в 'onClick()'? Ни один из ваших комментариев не имеет никакого смысла. – earthw0rmjim