Сохранить выбранное состояние кнопки Android
Я знаю, что это вопрос, который задавался много раз раньше, но я не могу его решить в своем коде. У меня две кнопки, и когда один нажат, я хотел бы сохранить его в выбранном состоянии и наоборот. Я попытался сделать это, но setSelected и setPressed, но я не могу заставить его работать. Вот код, который я использую:
region_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
objects = category;
adap.notifyDataSetChanged();
proximity_button.setPressed(false);
region_button.setPressed(true);
}
});
proximity_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
objects = proximity;
adap.notifyDataSetChanged();
region_button.setPressed(false);
proximity_button.setPressed(true);
}
});
Edit:
Основываясь на комментариях, мне нужно добавить, что у меня есть собственный xml-фон для кнопок и хотелось бы сохранить текущий вид.
Ответы
Ответ 1
Хорошо, поэтому я использовал функции поиска Google в Интернете: p и я нашел следующее: fooobar.com/questions/185001/...
mycodes_Button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mycodes_Button.setPressed(true);
return true;
}
});
Но прочитайте комментарий, это довольно интересно!
Ответ 2
Почему вы используете кнопки? CheckBox или RadioGroup - лучшее решение для этих случай
checkBox.setChecked(false);
Ответ 3
Вот мысль, отключите нажатую кнопку и включите остальные. Расположите раскладку кнопок, аналогичную настроенной макете. Пользователь увидит его нажатым, но он фактически отключен.
Ответ 4
Флажок мог бы работать, но если вы используете пользовательский интерфейс ближе UISegmentedControl
на iOS, что возможно обернуть все кнопки, необходимые в LinearLayout
, тогда вы можете сделать что-то в соответствии с:
public void onClick( View v ){
if ( v.getID == R.id.btn1 ) {
btn1.setEnabled(false);
btn2.setEnabled(true);
// do stuff
}
else if ( v.getId() == R.id.btn2 ) {
btn2.setEnabled(false);
btn1.setEnabled(true);
// do stuff
}
}
Конечно, в вашей выпадающей папке вы добавляете цвет фона, границы и другие визуальные материалы для каждого состояния.