Изменить представление внутри onClickListener

Я реализовал onClickListener и основное действие своего приложения в отдельных классах. Основные классы содержат несколько кнопок и некоторый текст редактирования, и когда пользователь нажимает кнопку отмены, подсказка текста редактирования должна сбрасываться. основная деятельность

public ButtonListener(Context cx , Button b, EditText f) {
    cntx = cx;
    button = b;
    et = f;
}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
            //check wich button was pressed
    if(button.getId() == R.button.button_cancel) {
        et.setHint(R.string.et_nome);
    }
    else {
            //operations for other buttons

Но это не работает. Когда я нажимаю «Отмена», текст редактирования не стирается. В основном действии я вызываю кнопку с помощью

Button b = (Button)findViewById(R.button.button_cancel);

и установите слушателя

b.setOnclickListener(new ButtonListener(this, b, edittext));

что случилось?


person giozh    schedule 10.02.2013    source источник
comment
setHint() не стирает текст, а устанавливает подсказку для отображения когда представление пусто   -  person Geobits    schedule 10.02.2013


Ответы (2)


Попробуйте установить его текст пустым:

et.setText(" ");

Другие методы можно просмотреть здесь.

Другой способ справиться с этим — скрыть кнопку, чтобы временно ее убрать. Ознакомьтесь с этой веткой.

person Community    schedule 10.02.2013
comment
Да, это работает. Не могли бы вы объяснить мне, почему я не могу использовать setHint()? - person giozh; 10.02.2013
comment
setHint() — это постоянный элемент при загрузке представления, который очищается при взаимодействии с пользователем. - person ; 10.02.2013

Вы должны изменить:

if(button.getId() == R.button.button_cancel)

to:

if(v.getId() == R.button.button_cancel)

чтобы код проверял идентификатор элемента, вызвавшего событие клика, а не вашу переменную-член button.

person Ameen    schedule 10.02.2013
comment
это не должно быть проблемой, потому что я проверил с помощью сообщения журнала, что оператор if вызывается правильно - person giozh; 10.02.2013
comment
Ну, это работает, но это несколько избыточно. Рассмотрим создание экземпляра другого класса ButtonListener с Button, отличным от R.button.button_cancel. Теперь оператор if этого вызова никогда не будет истинным. - person Ameen; 10.02.2013