これが私のタイムピッカーの現在の様子です。分と分のみを最大30まで表示したいのですが、うまく動作しますが、キーボードで時間を入力すると時間が0に設定されますが、最大にしたいです。ユーザーが 50 を入力すると 30 になるはずですが、どうすればこれを行うことができますか? ここでは不要なため、タイムピッカーの時間を非表示にするにはどうすればよいですか。
protected void onCreate(Bundle savedInstanceState) {
System.out.println("Powernap");
super.onCreate(savedInstanceState);
setContentView(R.layout.powernap);
TimePicker pn = (TimePicker) findViewById(R.id.tp_powernap);
pn.setOnTimeChangedListener(StartTimeChangedListener);
pn.setIs24HourView(true);
}
private TimePicker.OnTimeChangedListener StartTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
updateDisplay(view, hourOfDay, minute);
}
};
private TimePicker.OnTimeChangedListener NullTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
}
};
private void updateDisplay(TimePicker timePicker, int hourOfDay, int minute) {
// do calculation of next time
int nextMinute = 0;
int nextHour = 0;
if (minute > 30){
System.out.println("Minute+30");
nextMinute = 30;
// set minute
timePicker.setCurrentMinute(nextMinute);
}
else {
System.out.println("minute 0");
nextMinute = 0;
}
if (hourOfDay != 0){
System.out.println("hour>0");
nextHour = 24;
}
// remove ontimechangedlistener to prevent stackoverflow/infinite loop
timePicker.setOnTimeChangedListener(NullTimeChangedListener);
// set minute
timePicker.setCurrentMinute(timePicker.getCurrentMinute()+nextMinute);
//set hour
timePicker.setCurrentHour(nextHour);
// hook up ontimechangedlistener again
timePicker.setOnTimeChangedListener(StartTimeChangedListener);
}