Выполнить действие по щелчку выдвижного ящика Handler - PullRequest
0 голосов
/ 30 ноября 2011

В моей заявке я хочу заполнить скользящую ничью только тогда, когда данные не равны нулю.Поэтому, когда пользователь нажимает на обработчик выдвижного ящика, он должен выдать диалоговое окно «Данные пусты», и выдвижной ящик не должен открываться.

Я пробовал Handler.setOnTouchListener () , но чтопроисходит в любом месте, где вызывается сенсорное событие, когда появляется диалоговое окно.

Есть предложения?

1 Ответ

0 голосов
/ 30 ноября 2011

Вам следует взглянуть на метод setOnDrawerOpenListener.

Создайте свой собственный OnDrawerOpenListener и используйте его, чтобы проверить, что данные нулевые -если это так, закройте ящик снова:

private class OnDrawerOpened implements OnDrawerOpenListener {
  @Override
  public void onDrawerOpened() {
    if( data == null )
      mySlidingDrawer.close();
  }
}

Вам понадобится ссылка на ваш SlidingDrawer, и вам потребуется OnDrawerOpened, чтобы быть внутренним классом, чтобы вы могли получить доступ к ссылке на ваш SlidingDrawer.

Альтернатива

Вы также можете создать свой собственный подкласс, расширив SlidingDrawer, а затем переопределив методы animateOpen() и open() (вам может понадобитьсяпереопределить animateToggle() и toggle() тоже):

public class MySlidingDrawer extends SlidingDrawer {

  public MySlidingDrawer( Context context, AttributeSet attrs ) {
    super( context, attrs );
  }

  @Override
  public void animateOpen() {
    if( data != null )    
      super.animateOpen();
    else
      //Show dialog
  }

  @Override
  public void open() {
    if( data != null )
      super.open();
    else
      //Show dialog
  }
}

Если вы сделаете это, вам нужно будет сослаться на собственную реализацию SlidingDrawer в вашем XML:

<com.myPackage.MySlidingDrawer>
   ...
</com.myPackage.MySlidingDrawer>

В зависимости от того, как и когда вы получаете данные для проверки на нулевое значение, вы можете либо передать их в MySlidingDrawer в своем конструкторе, либо добавить метод, с помощью которого вы можете установить данные.

...