2011-11-30 35 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的引用。

替代

您還可以通過擴展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 
    } 
} 

如果您做到這一點,你需要引用你自己在你的XML中執行SlidingDrawer

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

取決於如何以及何時獲取數據以檢查null,您可能希望將其傳遞到其構造函數中的MySlidingDrawer或添加一個方法,通過該方法可以設置數據。

+0

好吧,我申請了這個。現在發生的事是..Drawer打開..然後關閉並且對話框出現。我不希望它打開atall。 :( – voidRy

+0

檢查我上面發佈的替代方案。 – kaspermoerch