2012-12-12 2 views
1
public class QuickIWantActivity extends Activity implements 
     OnDateSetListener { 
..... 
..... 
..... 

dateET.setOnTouchListener(new View.OnTouchListener() { 

@Override 
public boolean onTouch(View v, MotionEvent event) { 

Calendar cal = Calendar.getInstance(); 
DatePickerDialog datePickDiag = new DatePickerDialog(
     QuickIWantActivity.this, QuickIWantActivity.this, cal 
      .get(Calendar.YEAR), cal.get(Calendar.MONTH), 
     cal.get(Calendar.DAY_OF_MONTH)); 
     datePickDiag.show(); 
     return true; 
     } 
    }); 

@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, 
     int dayOfMonth) { 

    int month = monthOfYear + 1; 
    dateET.setText(dayOfMonth + "- " + month + "- " + year); 
} 

} 

그래서를 닫으려면 세 번 클릭하여 요구하고있다, 나는 새로운 날짜를 설정하고,이를 기각하지 않습니다, 나는 다시 설정을 클릭 설정을 클릭합니다 (왜 날짜 대화 상자가 날짜 선택기를 여는 글고입니다 dateET 접촉에

MotionEvent.ACTION_DOWN 
MotionEvent.ACTION_MOVE 
MotionEvent.ACTION_UP 

하고 당신이 그들 중 하나를 체크되지 않기 때문에 : 심지어 지금은 늘 마지막이

+1

당신은 더 나은 정확하게 증상이 무엇인지 설명 고려해 볼 수 있습니다. – CommonsWare

+0

예, 설명을 추가했습니다. –

+1

'EditText'를 터치 할 때 하나 이상의 대화 상자를 시작하지 않습니까? 'datePickDialog'를 캐싱하고 다른 인스턴스가 현재 보이지 않는 경우에만'onTouch'에서 새로운 것을 생성함으로써 이것을 쉽게 테스트 할 수 있습니다. – Luksprog

답변

3

onTouch이 세 가지 이벤트 (정상 순서)를 수신 내가 3 시간 동안 설정을 클릭하면 기각됩니다, 기각 true를 반환하면 코드가 3 번 실행됩니다 (각 이벤트 당 하나씩).

솔루션 :

사용 onClick() 또는 체크 추가 (이 내가 할 것 인 것이다) :

@Override 
public boolean onTouch(View v, MotionEvent event) { 

switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 

Calendar cal = Calendar.getInstance(); 
DatePickerDialog datePickDiag = new DatePickerDialog(
     QuickIWantActivity.this, QuickIWantActivity.this, cal 
      .get(Calendar.YEAR), cal.get(Calendar.MONTH), 
     cal.get(Calendar.DAY_OF_MONTH)); 
     datePickDiag.show(); 
     return false; 
     } 
    }); 
break; 
} 
+0

설명해주십시오 : ** MotionEvent.ACTION_DOWN **은 무엇입니까? 나는 다른 2와 어떻게 다른가요? –

+0

@ Archie.bpgc :'ACTION_DOWN'은 처음에는 화면을 터치하는 손가락입니다. 'ACTION_MOVE'는 화면에서 이미 움직이는 이미 내려간 손가락입니다. 'ACTION_UP '은 화면을 떠나는 손가락입니다. – CommonsWare

+0

감사합니다. 둘 다 :) –

관련 문제