2012-02-29 13 views
4

は簡単です。しかし、データストレージについては、これらのクラスに問題があります。Androidの日付ピッカー(ダイアログ)に保存されていない手動入力

日付を変更するためにスピナー(+または - ボタン)を使用すると、すべて正常に動作します。 「Date changed」または「Date set」というイベントが呼び出され、ユーザーが入力した値を取得できます。

しかし、入力フィールドに(キーボードを使用して)年を手動で入力し、ダイアログで「保存」をクリックすると、イベントが呼び出されず、手動で入力された値が取得されません。

手動で年を入力した後でスライダを使用して何かを変更した場合にのみ機能します。スライダーを使用すると、イベントが発生するためです。

これは正常な動作ですか?ユーザーが手動で何かをエンゲージして「保存」をクリックしたときにイベントが発生するという、目的の動作をどのように達成できますか?

ありがとうございます!

答えて

8

ただ、明確な焦点と呼ばれ、アンドロイドは手動入力から数を設定します

例:。

DatePicker datePicker = fidnViewById(R.id.dp); 

onClick()のように保存する場合は、 datePicker.clearFocus()を追加してください。

これは機能している必要があります。

+0

。!おかげで内部 –

0

Date Picker Exampleを見ると、ユーザーがダイアログの「SET」ボタンをクリックするとすぐにDatePickerDialog.OnDateSetListenerコールバックが受信されます。

enter image description here

以下のダイアログで

ルックあなたがキーボードを使用して日付を入力する場合であっても、日付自体は受け入れられませんあなたは、ダイアログで「SET」ボタンをクリックして、いつそれがあるまで、 。DatePickerDialog.OnDateSetListenerコールバックは

1

私は同じ問題を抱えていて、受け入れられた答えが本当に助けになりました。私の状況は若干異なりますが、私はDatePickerDialogを使っています。最終的にDatePickerが正しく機能する方法は次のとおりです。

最初に変数を宣言してから定義します。

private DatePickerDialog.OnDateSetListener date; 
private DatePickerDialog mDatePickerDialog; 
private Calendar myCalendar; 

// Get the calendar instance 
myCalendar = Calendar.getInstance(); 

// Define the date set listener first. 
date = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
     int dayOfMonth) { 
     // Do something with year, monthOfYear and dayOfMonth 
    } 
}; 

// Now define the DatePickerDialog 
mDatePickerDialog = new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)); 
mDatePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Set", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface arg0, int arg1) { 
     DatePicker datePicker = mDatePickerDialog.getDatePicker(); 

     // The following clear focus did the trick of saving the date while the date is put manually by the edit text. 
     datePicker.clearFocus(); 
     date.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth()); 
    } 
}); 

次にボタンのonClick

それは魔法のように動作
mDatePickerDialog.show(); 
関連する問題