0

私のアプリケーションでは、データが null でない場合にのみスライディング ドローを塗りつぶしたいと考えています。そのため、ユーザーがスライド ドロワー ハンドラーを押すと、「データが空です」というダイアログが表示され、スライド ドロワーは開かれません。

私はHandler.setOnTouchListener()を試しましたが、何が起こるかは、ダイアログボックスが表示されるタッチイベントが呼び出される場所です。

助言がありますか?

4

1 に答える 1

0

メソッドを見てくださいsetOnDrawerOpenListener

独自のものを作成し、それOnDrawerOpenListenerを使用してデータが null かどうかを確認します。null の場合は、ドロワーをもう一度閉じます。

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

your への参照がSlidingDrawer必要OnDrawerOpenedであり、内部クラスである必要があるため、 your への参照にアクセスできますSlidingDrawer

また、 andメソッドを拡張SlidingDrawerしてからオーバーライドすることで、独自のサブクラスを作成することもできます ( andもオーバーライドする必要がある場合があります)。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>

null をチェックするデータを取得する方法とタイミングに応じて、データをMySlidingDrawerコンストラクターに渡すか、データを設定できるメソッドを追加することができます。

于 2011-11-30T10:22:57.657 に答える