在我的應用程序中,我只想在數據不爲空時填充滑動繪圖。 因此,當用戶按下滑動抽屜處理程序時,它應該給出一個對話框「數據爲空」,並且滑動抽屜不應該打開。單擊滑動抽屜執行操作處理程序
我試過Handler.setOnTouchListener()但是在接觸事件被調用的任何地方會出現對話框。
有什麼建議嗎?
在我的應用程序中,我只想在數據不爲空時填充滑動繪圖。 因此,當用戶按下滑動抽屜處理程序時,它應該給出一個對話框「數據爲空」,並且滑動抽屜不應該打開。單擊滑動抽屜執行操作處理程序
我試過Handler.setOnTouchListener()但是在接觸事件被調用的任何地方會出現對話框。
有什麼建議嗎?
您應該看看方法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
或添加一個方法,通過該方法可以設置數據。
好吧,我申請了這個。現在發生的事是..Drawer打開..然後關閉並且對話框出現。我不希望它打開atall。 :( – voidRy
檢查我上面發佈的替代方案。 – kaspermoerch