내 애플리케이션에서 데이터가 null이 아닌 경우에만 슬라이딩 드로잉을 채 웁니다. 따라서 사용자가 슬라이딩 서랍 핸들러를 누르면 "데이터가 비어 있습니다."라는 대화 상자가 나타나야하며 슬라이딩 서랍이 열리지 않아야합니다.슬라이딩 서랍을 클릭 할 때 동작 수행 처리기
Handler.setOnTouchListener()하지만 터치 이벤트가 호출되는 곳이면 어디에서든지 해당 대화 상자가 나타납니다.
제안 사항?
내 애플리케이션에서 데이터가 null이 아닌 경우에만 슬라이딩 드로잉을 채 웁니다. 따라서 사용자가 슬라이딩 서랍 핸들러를 누르면 "데이터가 비어 있습니다."라는 대화 상자가 나타나야하며 슬라이딩 서랍이 열리지 않아야합니다.슬라이딩 서랍을 클릭 할 때 동작 수행 처리기
Handler.setOnTouchListener()하지만 터치 이벤트가 호출되는 곳이면 어디에서든지 해당 대화 상자가 나타납니다.
제안 사항?
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
에 전달하거나 데이터를 설정할 수있는 방법을 추가 할 수 있습니다.
좋아, 이것을 적용했습니다. 이제 무슨 일이 일어나는가 .. 드로어가 열리고 닫히면 대화 상자가 열립니다. 나는 그걸 전혀 열지 말아. ( – voidRy
내가 위에 게시 한 대안을 확인하십시오. – kaspermoerch