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が発生します。
私はかなり前から答えを探していましたが、同様の投稿はすべて、日付の検証ではなく、ダイアログの作成時に発生した例外に関するものです。
何が起こっているのかを知るのを手伝ってくれませんか?
ありがとうございました