Toast.makeText(getBaseContext(),
"Date selected:" + datePicker.getMonth()+1+
"/"+ datePicker.getDayOfMonth() +
"/"+ datePicker.getYear() +"\n" +
"Time Slected:" + timePicker.getCurrentHour() +
":"+ timePicker.getCurrentMinute(),
Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)
通过向datePicker.getMonth()添加1,我得到月份数
output like->
jan-01,feb-11,mar-21
Run Code Online (Sandbox Code Playgroud)
但当我删除"1"时,我得到月份数输出
jan-0,feb-01,mar-02
Run Code Online (Sandbox Code Playgroud) 在我的Android模拟器上发生了奇怪的事情(代码和模拟器在API级别10上运行 - 是Android 2.3.3):我的emu上的当前日期是22.08.2011 - 如果我用这些设置初始化DatePickerDialog(使用新的值) Date() - 使用当前日期/时间初始化Date)然后失败,但有以下异常:
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): FATAL EXCEPTION: main
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): java.lang.IllegalArgumentException: current should be >= start and <= end
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.DatePicker.updateSpinners(DatePicker.java:357)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.DatePicker.init(DatePicker.java:352)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86)
Run Code Online (Sandbox Code Playgroud)
所以我检查了DatePicker的源代码(对于API lvl 2.3.3),我检查了DatePicker代码(因为从我知道它在updateSpinners方法中失败的strack跟踪)和那条线357(上面的堆栈中的第四行) trace)它调用mYearPicker.setCurrent(mYear); 这让我觉得我的一年有些不对劲.我记录了我过去的那一年 - 这是2011年的预期.所以我手动通过了2010年而不是有效 - DatePickerDialog出现了 - 初始化为2010年(太糟糕了,我真的需要当年 - 2011年;)......).
我有点不知道原因是什么...我的模拟器上的日期 - 如上所述 - 正确设置为22.08.2011 - 我的开发PC设置为同一天...
关于我哪里出错的任何线索/想法?为了方便起见,我在初始化DatePickerDialog的代码片段:
// Initializes a …Run Code Online (Sandbox Code Playgroud) android datepicker android-widget android-datepicker android-sdk-2.3
我有一个FromDate EditText,我添加了一个图像.现在,当我点击图像时,Datepicker会显示一个.现在当我选择一些日期并点击Set时 Button,日期设置在EditText.问题是,当我单击取消时Button,日期选择器消失了,并且在我按下返回之前,prev活动没有获得焦点!屏幕上没有触摸事件.请帮忙...
我有一个editText,当用户点击它时,会出现一个日期对话框,当设置日期时,日期应该出现在editText字段中.虽然很简单,但我找不到为什么会得到nullPointer异常.我已经尝试了几种方法并且经常更改我的代码,但没有任何作用.这是我的代码的一个概念:
开始上课:
public class Start extends FragmentActivity {
int year;
int month;
int day;
static final int DATE_DIALOG_ID = 999;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
EditText editText = (EditText) findViewById(R.id.etDepDate);
editText.setText("date");
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePick();
newFragment.show(getFragmentManager(), "datepicker");
}
}
Run Code Online (Sandbox Code Playgroud)
DatePick类:
public class DatePick extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
EditText editText;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c …Run Code Online (Sandbox Code Playgroud) 我使用日期和时间对话框来获取用户指定的事件的日期和时间.该数据是通过执行以下操作转换的:
int yearE = Integer.valueOf(evntDate.split("/")[2]);
int monthE = Integer.valueOf(evntDate.split("/")[1]);
int dayE = Integer.valueOf(evntDate.split("/")[0]);
int hour = Integer.valueOf(evntTm.split(":")[0]);
int min = Integer.valueOf(evntTm.split(":")[1]);
Run Code Online (Sandbox Code Playgroud)
价值观:
eventDate = "3/5/2015";
eventTime = "13:2";
Run Code Online (Sandbox Code Playgroud)
然后我获取该数据并将其转换为毫秒并将其存储在数据库中:
newCalendar.set(yearE, monthE, dayE,hour, min, 0);
startTime = newCalendar.getTimeInMillis();
...
Run Code Online (Sandbox Code Playgroud)
当我从数据库加载信息时,我尝试计算到指定日期之前剩余的时间.所以我做了以下事情:
Long timeL = Long.valueOf(time);
Calendar eventDay = Calendar.getInstance();
eventDay.setTimeInMillis(timeL);
Calendar today = Calendar.getInstance();
long diff = eventDay.getTimeInMillis() - today.getTimeInMillis();
// CONVERT:
int seconds = (int) TimeUnit.MILLISECONDS.toSeconds(diff);
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(diff);
int hours = (int) TimeUnit.MILLISECONDS.toHours(diff);
int days = (int) TimeUnit.MILLISECONDS.toDays(diff); …Run Code Online (Sandbox Code Playgroud) 所以我读过其他帖子,但仍然无法让它正常工作.我想禁用某人从我的datepickerfragment中选择未来日期的功能.任何帮助将不胜感激,谢谢!
[更新] 2015年4月26日 - 解决了,评论或回答的每个人 - 他们的解决方案有效.
调用datepicker的函数:
mSearchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerFragment datePickerFragment = new DatePickerFragment();
datePickerFragment.show(getSupportFragmentManager(), "datepicker");
}
});
Run Code Online (Sandbox Code Playgroud)
DatePickerFragment代码:
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
public EditText editText;
DatePicker dpResult;
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, …Run Code Online (Sandbox Code Playgroud) 我想在我的主视图中添加Android的时间和日期选择器并始终显示它.现在它只能作为一个对话框.有没有办法将它用作视图而不是对话框?
有没有可以做到这一点的图书馆?
提前致谢
我想在DatePickerDialog中禁用今天日期之前的日期.我是android的新手请建议我怎么能这样做.这是我为DatePickerDialog编写的代码.
<TextView
android:id="@+id/tv_arrival"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="@string/arrivaldate"/>
<Button
android:id="@+id/btn_arrival"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Set"/>Run Code Online (Sandbox Code Playgroud)
Button btn_arrival = (Button) findViewById(R.id.btn_arrival);
txt_arrival = (TextView) findViewById(R.id.tv_arrival);
myCalendar = Calendar.getInstance();
final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
btn_arrival.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(MainActivity.this,date , myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
}
});
private void updateLabel() {
String myFormat …Run Code Online (Sandbox Code Playgroud) 我需要一种简单快捷的方法来接受应用程序用户的完整日期(包括小时和分钟)。我应该用什么?我曾考虑过“日期和时间选择器”,但两者都占用了我活动的布局中的大量空间...谢谢。杰斐逊
在我的应用程序中,我必须显示 4-5 个日期选择器并设置日期如何使用 datepicker Dialog fragment 执行此操作?
目前我必须为所有日期选择器对话框制作单独的日期选择器...
public static class RegistrationDatePicker extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day);
dialog.getDatePicker().setMaxDate(new Date().getTime());
return dialog;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
mTextView.setText(String.valueOf(month + "/" …Run Code Online (Sandbox Code Playgroud) android android-datepicker android-dialogfragment datepickerdialog