2011-11-30 3 views
0

내 애플리케이션에서 데이터가 null이 아닌 경우에만 슬라이딩 드로잉을 채 웁니다. 따라서 사용자가 슬라이딩 서랍 핸들러를 누르면 "데이터가 비어 있습니다."라는 대화 상자가 나타나야하며 슬라이딩 서랍이 열리지 않아야합니다.슬라이딩 서랍을 클릭 할 때 동작 수행 처리기

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() 메소드를 오버라이드 (override) 할 수 :

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

좋아, 이것을 적용했습니다. 이제 무슨 일이 일어나는가 .. 드로어가 열리고 닫히면 대화 상자가 열립니다. 나는 그걸 전혀 열지 말아. ( – voidRy

+0

내가 위에 게시 한 대안을 확인하십시오. – kaspermoerch