单击滑动抽屉处理器执行操作

时间:2011-11-30 10:10:24

标签: android android-3.0-honeycomb slidingdrawer

在我的应用程序中,我想仅在数据不为空时才填充滑动绘图。 因此,当用户按下滑动抽屉处理器时,它应该给出一个对话框“数据为空”,滑动抽屉不应该打开。

我已经尝试过 Handler.setOnTouchListener(),但是在调用触摸事件的任何地方都会出现该对话框。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您应该查看方法setOnDrawerOpenListener

创建自己的OnDrawerOpenListener并使用它来检查数据是否为空 - 如果是,则再次关闭抽屉:

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,或者添加一个方法来设置数据。