1

타이머를 사용하여 숫자를 자동 감소시키는 Android Dialog에 단추 onLongClickListener을 구현했습니다. 내가 활동의 내부입니다 때 사용자가onTouchEvent in dialog

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_UP) { 
     myIncreaseTimer.cancel(); 
     myIncreaseTimer.purge(); 
     myIncreaseTimer = new Timer(); 
    } 
    return true; 
} 

그러나 화면을 터치 할 때, 대화, 나는 onTouchEvent를 통해 감소를 중지 할 수 있습니다

myIncreaseTimer = new Timer(); 
final Runnable runnable_decrease = new Runnable() { 
    public void run() { 
     int txt = Integer.parseInt(length.getText().toString()); 
     txt -= 1; 
     length.setText(String.valueOf(txt)); 
     if (txt == 0) { 
      myIncreaseTimer.cancel(); 
      myIncreaseTimer.purge(); 
      myIncreaseTimer = new Timer(); 
     } 
    } 
}; 
btnMinus.setOnLongClickListener(new View.OnLongClickListener() { 
    public boolean onLongClick(View v) { 
     myIncreaseTimer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(runnable_decrease); 
      } 
     }, 0, 300); 
     return true; 
    } 
}); 

여기 코드는 내가 대화 상자에서이 작업을 수행 할 수 없다 . 대화 상자에는 onTouchEvent가 없습니다.

누구나 onTouchEventDialog에 구현할 수 있는지 또는 Dialog에서 증가 타이머를 어디에서 중지해야합니까?

답변

4

입니다

+0

하지만 Activity를 확장해야하며 AppcompctActivity가 아니라 내가 여기에 추가 할 생각이 하나 더 있어야합니다. 우리가 syle android : style/Theme.Dialog를 설정하면. 활동 제목이 표시됩니다. 그것을 제거하고 싶다면 android : style/Theme.Holo.Dialog.NoActionBar를 사용하십시오. –

2

Dialog가 원래의 onTouchEvents를 처리하도록 설계되지 않았기 때문에. 대화 상자 (투명 테마, 제목 표시 줄 없음)처럼 보이는 활동을 작성하고 onTouchEvent 메소드를 대체하십시오.

, 지금 활동은 대화 상자처럼 당신은 너무

이 그것에 를 onTouchListener 구현하는 활동을 만들고

<activity android:theme="@android:style/Theme.Dialog"> 

그래서 매니페스트 파일에 대화에 onTouch를 처리 할 수 ​​