私のアプリケーションでは、データがヌルでない場合にのみスライドドローを塗りたいと思います。 したがって、ユーザーがスライディング・ドロワー・ハンドラーを押すと、「データは空です」というダイアログが表示され、スライド・ドロワーは開かないはずです。スライド引き出しのクリックでアクションを実行します。ハンドラー
私は試しましたHandler.setOnTouchListener()何が起こるかは、タッチイベントが呼び出されてそのダイアログボックスが表示されます。
提案がありますか?
私のアプリケーションでは、データがヌルでない場合にのみスライドドローを塗りたいと思います。 したがって、ユーザーがスライディング・ドロワー・ハンドラーを押すと、「データは空です」というダイアログが表示され、スライド・ドロワーは開かないはずです。スライド引き出しのクリックでアクションを実行します。ハンドラー
私は試しましたHandler.setOnTouchListener()何が起こるかは、タッチイベントが呼び出されてそのダイアログボックスが表示されます。
提案がありますか?
setOnDrawerOpenListener
をご覧ください。
独自のOnDrawerOpenListener
を作成し、データがnullであるかどうかを確認するためにそれを使用する - それがあれば、再び引き出しを閉じる:
private class OnDrawerOpened implements OnDrawerOpenListener {
@Override
public void onDrawerOpened() {
if(data == null)
mySlidingDrawer.close();
}
}
あなたのSlidingDrawer
への参照が必要になりますし、あなたがするOnDrawerOpened
が必要になります内部クラスであるため、SlidingDrawer
への参照にアクセスできます。
代替
あなたは(あなたもanimateToggle()
とtoggle()
をオーバーライドする必要があります)もSlidingDrawer
を拡張することで、独自のサブクラスを作成し、animateOpen()
とopen()
メソッドをオーバーライドすることができます:
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
}
}
あなたの場合これを行うには、XMLでSlidingDrawer
の独自の実装を参照する必要があります。
<com.myPackage.MySlidingDrawer>
...
</com.myPackage.MySlidingDrawer>
nullをチェックするデータを取得する方法とタイミングを頼りに、そのデータをコンストラクタ内のMySlidingDrawer
に渡すか、データを設定するためのメソッドを追加することができます。
これを適用しました。今起こっていることは..Drawerが開き、その後閉じるとダイアログボックスが表示されます。私はそれがまったく開いてほしくない。 :( – voidRy
私は上記の代替案をチェックしてください。 – kaspermoerch