2011-11-30 12 views
0

私のアプリケーションでは、データがヌルでない場合にのみスライドドローを塗りたいと思います。 したがって、ユーザーがスライディング・ドロワー・ハンドラーを押すと、「データは空です」というダイアログが表示され、スライド・ドロワーは開かないはずです。スライド引き出しのクリックでアクションを実行します。ハンドラー

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

提案がありますか?

答えて

0

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に渡すか、データを設定するためのメソッドを追加することができます。

+0

これを適用しました。今起こっていることは..Drawerが開き、その後閉じるとダイアログボックスが表示されます。私はそれがまったく開いてほしくない。 :( – voidRy

+0

私は上記の代替案をチェックしてください。 – kaspermoerch

関連する問題