Подтвердить что ты не робот

Сохранить выбранное состояние кнопки 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-фон для кнопок и хотелось бы сохранить текущий вид.

4b9b3361

Ответ 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
    }
}

Конечно, в вашей выпадающей папке вы добавляете цвет фона, границы и другие визуальные материалы для каждого состояния.