0

12 時間形式を使用しているときに、Android アプリケーションの TimePickerDialog 内で AM/PM を動的に変更する方法を探しています。ダイアログ内で時間が 11 から 12 に変更されたときに、ユーザーが設定ボタンをクリックする前に、AM を PM に、またはその逆に切り替えたいと考えています。これは可能ですか、それともカスタム TimePickerDialog コントロールの作成を検討する必要がありますか? 私の現在のコードは以下です。助けてくれてありがとう!

    // Start Time
    starttime = (Button)findViewById(R.id.starttime); 

    starttime.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
            boolean is24HourFormat = use24HourFormat();
            new TimePickerDialog(DutyHoursForm.this, 
                    startTimeListener, 
                    startDateAndTime.get(Calendar.HOUR_OF_DAY), 
                    startDateAndTime.get(Calendar.MINUTE), 
                    is24HourFormat).show(); 
            } 
    }); 

TimePickerDialog.OnTimeSetListener startTimeListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
        startDateAndTime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
        startDateAndTime.set(Calendar.MINUTE, minute); 
        updateStartTime(); 
    } 
};
4

1 に答える 1

1

変更前の時間を追跡する変数を初期化します - lastCurrentHour のように、onTimeChanged でこれを行うことができます:

public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
    if(DateFormat.is24HourFormat(this)) return;

    if(lastCurrentHour == 0 && view.getCurrentHour()==11 ){
        view.setCurrentHour(23);
    }else

    if(lastCurrentHour == 11 && view.getCurrentHour()==0 ){
        view.setCurrentHour(12);
    }else

    if(lastCurrentHour == 12 && view.getCurrentHour()==23 ){
        view.setCurrentHour(11);
    }else

    if(lastCurrentHour == 23 && view.getCurrentHour()==12 ){
        view.setCurrentHour(0);
    }
    lastCurrentHour = view.getCurrentHour();
}

ここで実用的な例を見つけてください。

于 2012-03-03T13:12:04.857 に答える