Android Изменение onClickListener во внешнем методе при реализации onClickListener - PullRequest
0 голосов
/ 02 ноября 2011

Я разрабатываю приложение, в котором мне нужно выключить и на некоторых кнопках onClicKListener.

У меня есть метод внешнего запуска, при котором я хочу переключить onClickListener на кнопки.В моем методе onCreate у меня есть такой код:

button.setOnClickListener(this); 

В методе, который я вызываю извне (это метод, который не onCreate), у меня есть оператор, который говорит button.setOnClickListener(null);, когда определенное условиевыполнено.

Теперь мне интересно, как в том же методе, если выполняется другое условие, снова включить onClickListener.Это не работает с button.setOnClickListener(this);

В своей деятельности я реализую onClickListener через extends Упражнения реализуют OnClickListener или что-то в этом роде.

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

Вместо того, чтобы устанавливать для onClickListener значение null каждый раз, когда вы не хотите, чтобы кнопка работала, почему бы не использовать свойство enabled?

private Button myButton;

@Override
public void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    myButton = (Button) findViewById(R.id.mynewbutton);
    myButton.setOnClickListener(/* your click listener here */);
    myButton.setEnabled(false);
}

private void whateverFunction() {
    if(true) {
        myButton.setEnabled(true);
    } else {
        myButton.setEnabled(false);
    }
}

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

2 голосов
/ 02 ноября 2011
    private boolean enableClick;
     @Override
     public void onCreate(Bundle savedInstanceState) 
     {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      Button button1 = (Button) findViewById(R.id.button1);
      button1.setOnClickListener(new View.OnClickListener() 
          {
              public void onClick(View v) 
              {
                  if(enableClick)
                  {
                      // do
                  }
              }
          }
  );

     }

Вам просто нужно обновить значение enableClick.

1 голос
/ 02 ноября 2011

Вы можете просто реализовать flag внутри метода onClick, который будет защищать методы, выполняемые внутри onClick.Нет необходимости устанавливать onClickListener на null, просто установите flag на false и метод onClick ничего не изменит.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...