3

ユーザーが時間を設定または変更してデータベースに保存できるタイムピッカーを使用していました。を使用して、タイムピッカーから時間と分を選択できました。

TimePicker getTimepickerTime = (TimePicker) findViewById(R.id.timePicker1);
int Hour= getTimepickerTime.getCurrentHour();
int Minute=getTimepickerTime.getCurrentMinute();

しかし、Time Picker から am_pm 値を選択する方法は?

私に提案してください。ここで立ち往生しました。

どんな助けでも大歓迎です!!

4

4 に答える 4

4

TimePickerDialog の代わりに TimePicker を使用している場合は、このコードを使用して Am と PM にアクセスする必要があります。いくつかの投稿では、AM/PM は非公開であり、Android のバグでもあるとのことでした。

グーグルから見つかったこのコードは、私のすべての問題を解決しました。

timePickerFrom = (TimePicker) findViewById(R.id.timePickerFrom);

    View amPmView  = ((ViewGroup) timePickerFrom.getChildAt(0)).getChildAt(2);
    if(amPmView instanceof Button)
    {
        amPmView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.d("OnClickListener", "OnClickListener called");
                if(v instanceof Button)
                {
                    if(((Button) v).getText().equals("AM"))
                    {
                        ((Button) v).setText("PM");
                         if (timePickerFrom.getCurrentHour() < 12) {
                             timePickerFrom.setCurrentHour(timePickerFrom.getCurrentHour() + 12);
                            }  

                    }
                    else{
                        ((Button) v).setText("AM");
                         if (timePickerFrom.getCurrentHour() >= 12) {
                             timePickerFrom.setCurrentHour(timePickerFrom.getCurrentHour() - 12);
                            }
                    }
                }

            }
        });
    }

これで、次を使用して時間を取得できます。

timePickerFrom.setOnTimeChangedListener(new OnTimeChangedListener() {
        @Override
        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
            // TODO Auto-generated method stub

            int timeFromHour = timePickerFrom.getCurrentHour();
            int timeFromMinute = timePickerFrom.getCurrentMinute();

        }
    });

私もこの問題を抱えていましたが、多くの努力の末、成功しました。希望はうまくいきます。

于 2014-11-20T06:53:00.667 に答える
2

この投稿timepickerdialog-and-am-or-pmを信頼する場合、時間は常に 24 時間形式になるため、午前/午後の値を取得する必要はありません。タイムピッカーは ap/pm を表示しますが、24 時間形式の値を返します。

于 2013-03-14T11:22:35.510 に答える
0

これは、Java または Android フレームワークによって提供される SimpleDateFormat を使用していつでも行うことができます。

onTimeSet リスナーによって返される時間は、常に 24 時間形式です。単純に解析して、表示したい方法にフォーマットします。

this.appointmentTimeDialog = new TimePickerDialog(getActivity(),new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    SimpleDateFormat format = new SimpleDateFormat("HH:MM");
                    try {
                        Date date = format.parse(""+hourOfDay+":"+minute);
                        timeCallBack.setText(new SimpleDateFormat("h:MM a").format(date.getTime()));
                    }catch(ParseException ex){
                        ex.printStackTrace();
                    }
                }
            }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE),false);

私は特別な Android 開発者の初心者の問題を解決したことを願っています :)

于 2015-05-27T01:33:09.807 に答える