【发布时间】:2015-03-25 21:16:03
【问题描述】:
我正在尝试解决here 中描述的相同问题。选择日期后,我希望用它来打开浏览器。还应该注意的是,我是从片段中完成这项工作的。
我正在使用第二种解决方案,但面临两个问题:
- 当我按下 ChooseDate 按钮时,DatePicker 会弹出,但在我可以选择日期之前,应用程序已经使用旧日期打开浏览器。当我按下后退按钮时,我会看到 DatePicker 并且我可以选择一个日期,如果我再次按下 ChooseDate 按钮,那么浏览器将打开几乎(见 2)所需的日期,然后按下我仍然会看到 DatePicker 等等.
- DatePicker 返回偏移量为 -1 的月份。例如。我选择三月,我得到二月。它发生在模拟器和 Nexus 5 设备上。 mCalender 是一个公历。
我的问题:
我怎样才能让日历一直保留到我选择一个日期然后让它消失?
是否有其他人遇到了日历提供的错误月份(我重新构建了应用程序,关闭并打开了 Android Studio),如果是,您对此做了什么(除了明显的 +1 hack)
我使用的是 Android Studio 1.1.0,API 21。
谢谢!
代码:
mChooseDateButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
openBrowser(CHOOSE_DAY);
}
});
void openBrowser(int option) {
String date = "";
switch (option) {
...
case CHOOSE_DAY:
chooseDate();
date = mChosenDate;
break;
...
}
String url = getUrl(date);
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
}
...
void chooseDate() {
int year = mCalendar.get(Calendar.YEAR);
int month = mCalendar.get(Calendar.MONTH);
int day = mCalendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(this.getActivity(),
new DateSetListener(), year, month, day);
dialog.show();
}
class DateSetListener implements DatePickerDialog.OnDateSetListener {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
int chosenMonth = monthOfYear;
int chosenDay = dayOfMonth;
Log.i("DEBUG","chosen month: " + chosenMonth);
updateChosenDate(chosenMonth,chosenDay);
}
}
【问题讨论】:
标签: android datepicker android-calendar android-datepicker