2011-12-22 17 views
1

timePickerDialogでAM/PM値を取得したいとします。私のコードはそうです、それはtimepickerdialog経由でユーザーからの入力を受けて、アラームを設定しています。 onTimeSet関数呼び出しは、私は、ユーザーが選択したAM/PM値を取得することができ、ユーザが選択した時間と分を取得することはできませんが、とき、ここで私は今、ユーザーの入力TimePickerDialog AM PM値の取得方法

datetime = Calendar.getInstance(); 
new TimePickerDialog(this,this,datetime.get(Calendar.HOUR),datetime.get(Calendar.MINUTE),false).show(); 

を取得しています。ここに他のコードは

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { try { Calendar time = Calendar.getInstance(); 
String am_pm; 

if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
    am_pm = "AM"; 
else if (datetime.get(Calendar.AM_PM) == Calendar.PM) 
    am_pm = "PM"; 

time.set(Calendar.HOUR, hourOfDay); 
time.set(Calendar.MINUTE, minute); 
//time.set(Calendar.SECOND, 0); 
//time.set(Calendar.MILLISECOND, 0); 
//time.set(Calendar.AM_PM,datetime.PM); 

AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(this, AlarmReceiver.class); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);  
alarmMgr.set(AlarmManager.RTC_WAKEUP,time.getTimeInMillis(), pendingIntent); 
Toast.makeText(this, "Alarm Set", Toast.LENGTH_long); 
+0

@Philipp Reichartは返事を感謝します。私は下のポストからの理解を得た。今私はabt AM PM値を話していません。私はアンドロイドがユーザーを選択すると24時間形式に変換するansを得た。私の "time"オブジェクト(上記のコード)のHour_Of_Dayおよびminutesパラメータを設定した後。私はsetメソッドを呼び出し、time.getTimeInMillis()を呼び出します。問題は、次の日の時刻を設定すると(私の現在のシステム時刻が午後9時で、翌日の午後8時に設定されていますが)alarmManagerがすぐにアラームをトリガーすることです。これについて私を導くことができますか? –

答えて

2

これは多分あなたの質問に答えます。あなたのリスナー内のカレンダーの

TimePickerDialog and AM or PM

+0

いいえ、AM/PMフィールドを取得できません。私のシステムは、私が11:05 AMにtimepicerdialog経由でアラームを設定したときに11:00 PMの時間を表示しています。その後、AMの代わりに11:05 PMにアラームが起動します –

6

クレタ新しいインスタンス、次のように更新

Calendar datetime = Calendar.getInstance(); 
    c.set(Calendar.HOUR, mHour); 
    c.set(Calendar.MINUTE, mMinute); 

    if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
     am_pm = "AM"; 
    else if (datetime.get(Calendar.AM_PM) == Calendar.PM) { 
     am_pm = "PM"; 
     if (hourOfDay > 12) 
       hourOfDay = hourOfDay - 12; 
    } 

Calendar mCalendar = Calendar.getInstance(); 

mHour = mCalendar.get(Calendar.HOUR_OF_DAY); 
mMinute = mCalendar.get(Calendar.MINUTE); 


TimePickerDialog timePickerDialog = new TimePickerDialog(mActivity, mTimeSetListener, mHour, mMinute, false); 

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

     mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
     mCalendar.set(Calendar.MINUTE, mMinute); 
     SimpleDateFormat mSDF = new SimpleDateFormat("hh:mm a"); 
     String time = mSDF.format(mCalendar.getTime()); 
    } 
} 
+0

ありがとうございます – SAndroidD

0

はこれを試してみてください。

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    String am_pm = ""; 

    Calendar datetime = Calendar.getInstance(); 
    datetime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    datetime.set(Calendar.MINUTE, minute); 

    if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
     am_pm = "AM"; 
    else if (datetime.get(Calendar.AM_PM) == Calendar.PM) 
     am_pm = "PM"; 

    String strHrsToShow = (datetime.get(Calendar.HOUR) == 0) ?"12":datetime.get(Calendar.HOUR)+""; 

    ((Button)getActivity().findViewById(R.id.btnEventStartTime)).setText(strHrsToShow+":"+datetime.get(Calendar.MINUTE)+" "+am_pm); 
} 
関連する問題