私のアプリケーションでは、データが null でない場合にのみスライディング ドローを塗りつぶしたいと考えています。そのため、ユーザーがスライド ドロワー ハンドラーを押すと、「データが空です」というダイアログが表示され、スライド ドロワーは開かれません。
私はHandler.setOnTouchListener()を試しましたが、何が起こるかは、ダイアログボックスが表示されるタッチイベントが呼び出される場所です。
助言がありますか?
私のアプリケーションでは、データが null でない場合にのみスライディング ドローを塗りつぶしたいと考えています。そのため、ユーザーがスライド ドロワー ハンドラーを押すと、「データが空です」というダイアログが表示され、スライド ドロワーは開かれません。
私はHandler.setOnTouchListener()を試しましたが、何が起こるかは、ダイアログボックスが表示されるタッチイベントが呼び出される場所です。
助言がありますか?
メソッドを見てください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
コンストラクターに渡すか、データを設定できるメソッドを追加することができます。