DatePickerDialogで日付を検証すると、IllegalArgumentExceptionが発生します。スタックトレースは次のとおりです。
10-27 19:50:34.700: E/AndroidRuntime(1188): FATAL EXCEPTION: main
10-27 19:50:34.700: E/AndroidRuntime(1188): java.lang.IllegalArgumentException
10-27 19:50:34.700: E/AndroidRuntime(1188): at java.text.DateFormat.format(DateFormat.java:365)
10-27 19:50:34.700: E/AndroidRuntime(1188): at java.text.Format.format(Format.java:93)
10-27 19:50:34.700: E/AndroidRuntime(1188): at com.boka.lesbonscomptes.ActivityMain$1.onDateSet(ActivityMain.java:43)
10-27 19:50:34.700: E/AndroidRuntime(1188): at android.app.DatePickerDialog.onClick(DatePickerDialog.java:111)
10-27 19:50:34.700: E/AndroidRuntime(1188): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
10-27 19:50:34.700: E/AndroidRuntime(1188): at android.os.Handler.dispatchMessage(Handler.java:99)
10-27 19:50:34.700: E/AndroidRuntime(1188): at android.os.Looper.loop(Looper.java:137)
10-27 19:50:34.700: E/AndroidRuntime(1188): at android.app.ActivityThread.main(ActivityThread.java:4424)
10-27 19:50:34.700: E/AndroidRuntime(1188): at java.lang.reflect.Method.invokeNative(Native Method)
10-27 19:50:34.700: E/AndroidRuntime(1188): at java.lang.reflect.Method.invoke(Method.java:511)
10-27 19:50:34.700: E/AndroidRuntime(1188): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-27 19:50:34.700: E/AndroidRuntime(1188): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-27 19:50:34.700: E/AndroidRuntime(1188): at dalvik.system.NativeStart.main(Native Method)
と私のコード
パブリッククラスActivityMainはActivity{を拡張します //UIに帰属 private LinearLayout layoutNouvelleDepense = null; プライベートボタンbDate=null; プライベートグレゴリオ暦gcDate=null; // util private SimpleDateFormat sdfAjd = null; static final int DATE_DIALOG_ID = 1; /*リスナー*/ private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener(){ public void onDateSet(DatePicker view、int year、int monthOfYear、int dayOfMonth) {{ Toast.makeText(getBaseContext()、 "ok"、Toast.LENGTH_SHORT).show(); //Ladateestcaléesurlechoixde l'utilisateur gcDate.set(year、monthOfYear、dayOfMonth); // Leboutonestmisàjouravecladate choisie bDate.setText(sdfAjd.format(gcDate)); } }; private OnClickListener oclBoutonDate = new View.OnClickListener(){ @オーバーライド public void onClick(View v){ showDialog(DATE_DIALOG_ID); } }; /*方法*/ @オーバーライド public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); layoutNouvelleDepense =(LinearLayout)LinearLayout.inflate(this、R.layout.nouvelle_depense、null); bDate =(ボタン)layoutNouvelleDepense.findViewById(R.id.bDate); bDate.setOnClickListener(oclBoutonDate); gcDate = new GregorianCalendar(); sdfAjd = new SimpleDateFormat( "EEEE dd / MM / yyyy"、Locale.getDefault()); bDate.setText(sdfAjd.format(gcDate.getTime())); setContentView(layoutNouvelleDepense); } @オーバーライド public boolean onCreateOptionsMenu(Menu menu){ getMenuInflater()。inflate(R.menu.activity_main、menu); trueを返します。 } @SuppressWarnings( "static-access") @オーバーライド 保護されたダイアログonCreateDialog(int id) {{ System.out.println( "DATE =" + gcDate.get(GregorianCalendar.YEAR)+ "/" + gcDate.get(GregorianCalendar.MONTH)+ "/" + gcDate.get(GregorianCalendar.DAY_OF_MONTH)); 新しいDatePickerDialog(this、mDateSetListener、gcDate.get(GregorianCalendar.YEAR)、gcDate.get(GregorianCalendar.MONTH)、gcDate.get(GregorianCalendar.DAY_OF_MONTH));を返します。 } }
ダイアログの作成に問題はなく、ダイアログが表示されたときに日付が正しく初期化されます。
選択した日付に関係なく、IllegalArgumentExceptionが発生します。
私はかなり前から答えを探していましたが、同様の投稿はすべて、日付の検証ではなく、ダイアログの作成時に発生した例外に関するものです。
何が起こっているのかを知るのを手伝ってくれませんか?
ありがとうございました