【发布时间】:2019-03-06 15:00:16
【问题描述】:
我有两个对话框选择器:签入和签出。但我希望在单击“签入”中的日期后,它将禁用之前的日期。因此,当我在 Check In 上单击 2019 年 3 月 6 日时,在 Checkout 上,应该是 2019 年 3 月 7 日,依此类推。
签入和签出图片
DatePickerFragment.Java:
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
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(getContext(), (DatePickerDialog.OnDateSetListener)getActivity(), year, month, day);
dialog.getDatePicker().setMinDate(System.currentTimeMillis()-1000);
return dialog;
}
Details.Java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
final DialogFragment datePicker = new DatePickerFragment();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
datePicker.show(getSupportFragmentManager(),"Date Picker");
startDateOrEndDate = true ;
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
datePicker.show(getSupportFragmentManager(),"Date Picker");
startDateOrEndDate = false ;
}
});
}
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year );
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String date = DateFormat.getDateInstance(DateFormat.FULL).format(c.getTime());
TextView textView = (TextView) findViewById(R.id.checkInTV);
TextView textView2 = (TextView) findViewById(R.id.checkOutTV);
if (startDateOrEndDate) {
textView.setText(date);
} else {
textView2.setText(date);
}
}
【问题讨论】:
-
但我需要的是用户选择了第一个日期,然后在第二个日期,第一个日期之前的日期应该被禁用。例如。现在是 3 月 6 日,所以在第一个日期选择器上我选择了 3 月 9 日,然后在第二个日期选择器上,3 月 9 日之前的日期应该已经被禁用,只有从 3 月 9 日开始应该适用。
-
您找到解决方案了吗?
-
很遗憾没有 T_T。我更新了我的代码,但我想没有人没有找到解决方案。请帮忙。谢谢你:)
-
请标记你评论的人,否则他们永远不会知道你评论了。只需输入@name,(收件人姓名的前几个字母)它会自动填写。
标签: android android-datepicker