我正在尝试解决here所描述的同一问题。选择日期后,我希望用它来打开浏览器。还应该注意的是,我正在从片段中完成这项工作。
我正在使用第二种解决方案,但面临两个问题:
我的问题:
如何在我选择日期然后让它消失之前让日历保持不变?
其他人是否遇到了日历提供的错误月份(我重建了应用程序,关闭并打开了Android Studio),如果是这样,你用它做了什么(除了明显的+1黑客)< / p>
我使用的是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);
}
}
答案 0 :(得分:0)
你需要移动它:
String url = getUrl(date);
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
到DateSetListener调用onDateSet的方法,因此在实际设置日期之前不会触发它。您当前的代码将通过switch case运行并启动intent而无需等待openBrowser()中的Dialog。
月份的问题可能是因为日历从0开始,并且提供的值不会抵消这个。所以只需增加1。