当我在 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 {
//属性界面
私人线性布局布局NouvelleDepense = null;
私人按钮 bDate = null;
私人公历日历 gcDate = null;
//工具
私人 SimpleDateFormat sdfAjd = null;
静态最终 int DATE_DIALOG_ID = 1;
/*监听器*/
私人 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();
//La date est calée sur le choix de l'utilisateur
gcDate.set(year, monthOfYear, dayOfMonth);
//Le bouton est mis à jour avec la date choisie
bDate.setText(sdfAjd.format(gcDate));
}
};
私人 OnClickListener oclBoutonDate = new View.OnClickListener() {
@覆盖
公共无效 onClick(查看 v){
显示对话(DATE_DIALOG_ID);
}
};
/*方法*/
@覆盖
公共无效 onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
layoutNouvelleDepense = (LinearLayout) LinearLayout.inflate(this,R.layout.nouvelle_depense, null);
bDate = (Button) 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);
}
@覆盖
公共布尔 onCreateOptionsMenu(菜单菜单){
getMenuInflater().inflate(R.menu.activity_main, menu);
返回真;
}
@SuppressWarnings("静态访问")
@覆盖
受保护的对话 onCreateDialog(int id)
{
System.out.println("DATE = " + gcDate.get(GregorianCalendar.YEAR) + "/" + gcDate.get(GregorianCalendar.MONTH) + "/" + gcDate.get(GregorianCalendar.DAY_OF_MONTH));
return new DatePickerDialog(this, mDateSetListener, gcDate.get(GregorianCalendar.YEAR), gcDate.get(GregorianCalendar.MONTH), gcDate.get(GregorianCalendar.DAY_OF_MONTH));
}
}
我在创建对话框时没有问题,并且在显示对话框时正确初始化了日期。
无论选择哪个日期,都会引发 IllegalArgumentException。
很长一段时间以来,我一直在寻找答案,但所有类似的帖子都是关于创建对话框时提出的异常,而不是验证日期。
你能帮我看看是怎么回事吗?
谢谢