2010-05-27 10 views
1

현재 사용자가 제출 한 날짜와 시간을 검색하기 위해 날짜와 시간 선택기를 사용하고 선택한 날짜와 시간으로 컨트롤의 텍스트를 설정합니다.맞춤형 날짜 및 시간을 검색하는 우아한 솔루션?

나는 다음과 같은 코드를 사용하고 있습니다 : 위의 코드 블록은 날짜와 시간을 위젯을 불러와 텍스트를 설정 않지만, 지금

new DatePickerDialog(newlog3.this, d, calDT.get(Calendar.YEAR), calDT.get(Calendar.MONTH), calDT.get(Calendar.DAY_OF_MONTH)).show(); 

new TimePickerDialog(newlog3.this, t, calDT.get(Calendar.HOUR_OF_DAY), calDT.get(Calendar.MINUTE), true).show(); 

optCustom.setText(fmtDT.format(calDT.getTime())); 

를, 코드 블록은 사용자가 이전에 전액 수 있습니다 실행중인 날짜를 선택하십시오 .. 예 : 날짜 상자를 먼저 가져온 다음 시간 상자를 가져온 다음 사용자 상호 작용없이 텍스트를 업데이트합니다. 날짜 선택이 완료 될 때까지 시간 선택기를 실행하기 위해 날짜 위젯을 기다리고 싶습니다. 그리고 시간 위젯이 완료된 후에 만 ​​settext를 실행하고 싶습니다.

어떻게 가능합니까? 아니면 나를 탈출하는 더 우아한 해결책이 있습니까?

편집 : 사전에

DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, int monthOfYear, 
        int dayOfMonth) { 
      calDT.set(Calendar.YEAR, year); 
      calDT.set(Calendar.MONTH, monthOfYear); 
      calDT.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
      //updateLabel(); 
     } 
     }; 
TimePickerDialog.OnTimeSetListener t=new TimePickerDialog.OnTimeSetListener() { 
     public void onTimeSet(TimePicker view, int hourOfDay, 
          int minute) { 
      calDT.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      calDT.set(Calendar.MINUTE, minute); 
      //updateLabel(); 
     } 
     }; 

감사 DatePickerDialogDatePickerDialog.OnDateSetListener와 닫을 때

답변

2

듣기 :이 클래스에 위치해 있습니다 DatePickerDialog/TimePickerDialog 코드입니다. onDateSet (...)이 호출되면 다음 대화 상자를 표시합니다 (TimePickerDialog).

편집 : 나는 당신이

public class YourActivity extends Activity {  

private final Calendar selectedDate = Calendar.getInstance(); 

final DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      selectedDate.set(Calendar.YEAR, year); 
      selectedDate.set(Calendar.MONTH, monthOfYear); 
      selectedDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
      new TimePickerDialog(YourActivity.this, timeListener, 0, 0, true).show(); 
     } 
     }; 

final TimePickerDialog.OnTimeSetListener timeListener = new TimePickerDialog.OnTimeSetListener() { 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      selectedDate.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      selectedDate.set(Calendar.MINUTE, minute);    
      // push flow to the next step 
     } 
     }; 

public void startTimeWizard() { 
    final Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis());  
    new DatePickerDialog(this, dateListener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();  
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main); 
    startTimeWizard(); 
} 

}을 (를) 요청 코드를 붙여 넣은

+0

당신이 코드 샘플을 줄 수 있다고 생각합니까? 내 수업에서 위의 리스너를 사용하고 있지만 대화 닫는 방법을 살펴 보려면 어떻게해야합니까? – kefs

+0

다시 한 번 감사드립니다. 나는 당신의 첫 번째 제안을 기반으로 그것을 알아 내 끝에 내 코드에 동일한 코드가 있지만 내 settext 업데이트되지 않았습니다 (또는 그래서 내가 생각 .. 내가 textview 안보여 설정했다) .. 어쨌든 .. 그것은 .. 지금 일하고있어. 단지 당신이 시간대에 현재 시간/분을 설정하지 않았다는 것을 알았습니다. : p – kefs

관련 문제