最后选择的日期未进入日期选择器对话框
Last selected date is not getting in datepicker dialog
在我的应用程序中,我有一个日期选择器,我能够 select 并在 textview 中设置 selected 日期,但问题是如果我再次单击 textview 以打开日期选择器对话框,它总是显示当前日期而不是上次 selected 日期..那么问题是什么?
public class MainActivity extends Activity {
private TextView date_dropdown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
date_dropdown=(TextView)findViewById(R.id.shows_dt);
Calendar calendar = Calendar.getInstance();
date_dropdown.setText(calendar.get(Calendar.DAY_OF_MONTH) + "-"
+ (calendar.get(Calendar.MONTH) + 1) + "-"
+ calendar.get(Calendar.YEAR));
date_dropdown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePickerDialog();
}
});
}
public void showDatePickerDialog() {
System.out.println("show date picke dilg ");
System.out.println("show date picke dilg");
DialogFragment newFragment1 = new SelectDateFragment();
newFragment1.show(getFragmentManager(), "DatePicker");
}
public class SelectDateFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm + 1, dd);
}
public void populateSetDate(int year, int month, int day) {
date_dropdown.setText(day + "-" + month + "-" + year);
}
}
您给定的行下方仅获取当前日期,
所以你只会得到当前日期。
date_dropdown.setText(calendar.get(Calendar.DAY_OF_MONTH) + "-"
+ (calendar.get(Calendar.MONTH) + 1) + "-"
+ calendar.get(Calendar.YEAR));
在共享首选项中保存您选择的日期,然后在您的 TextView 中显示
看起来你每次点击都在创建一个新对话框,这意味着 onCreateDialog
再次将日期设置为当前时间。你想要一个 class 变量 DialogFragment df
,并在你的 showDatePickerDialog
中做这样的事情:
public void showDatePickerDialog() {
if (df == null){
// Only create a new fragment if one does not exist
DialogFragment df = new SelectDateFragment();
}
df.show(getFragmentManager(), "DatePicker");
}
您还需要在 onPause
方法中存储用户选择的值,并在 onResume
中将 DialogFragment
设置为该值,以防您的用户离开您的应用程序正在输入信息。
您应该在 onCreate()
方法中定义日历实例,然后更新所有年份的月份和日期值 onDateSet()
,因此当您再次打开日期选择器对话框时,它会显示之前选择的日期。
照这样做
public class MainActivity extends Activity {
private TextView date_dropdown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Calendar calendar = Calendar.getInstance();
int yy1 = calendar.get(Calendar.YEAR);
int mm1 = calendar.get(Calendar.MONTH);
int dd1 = calendar.get(Calendar.DAY_OF_MONTH);
date_dropdown=(TextView)findViewById(R.id.shows_dt);
Calendar calendar = Calendar.getInstance();
date_dropdown.setText(calendar.get(Calendar.DAY_OF_MONTH) + "-"
+ (calendar.get(Calendar.MONTH) + 1) + "-"
+ calendar.get(Calendar.YEAR));
date_dropdown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePickerDialog();
}
});
}
public void showDatePickerDialog() {
System.out.println("show date picke dilg ");
System.out.println("show date picke dilg");
DialogFragment newFragment1 = new SelectDateFragment();
newFragment1.show(getFragmentManager(), "DatePicker");
}
public class SelectDateFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new DatePickerDialog(getActivity(), this, yy1, mm1, dd1);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm + 1, dd);
yy1 = yy ;
mm1 = mm;
dd1 = dd ;
}
public void populateSetDate(int year, int month, int day) {
date_dropdown.setText(day + "-" + month + "-" + year);
}
}
How to disable future date picker in android
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
ed_date.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Calendar mcurrentDate=Calendar.getInstance();
year=mcurrentDate.get(Calendar.YEAR);
month=mcurrentDate.get(Calendar.MONTH);
day=mcurrentDate.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday)
{
ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
int month_k=selectedmonth+1;
}
},year, month, day);
mDatePicker.setTitle("Please select date");
// TODO Hide Future Date Here
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
// TODO Hide Past Date Here
// mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mDatePicker.show();
}
});
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
ed_date.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Calendar mcurrentDate=Calendar.getInstance();
year=mcurrentDate.get(Calendar.YEAR);
month=mcurrentDate.get(Calendar.MONTH);
day=mcurrentDate.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday)
{
ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
int month_k=selectedmonth+1;
}
},year, month, day);
mDatePicker.setTitle("Please select date");
// TODO Hide Future Date Here
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
// TODO Hide Past Date Here
// mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mDatePicker.show();
}
});
通过在日期选择器中设置上一个选定日期来更新日期
mDatePicker.updateDate(1994, 6, 12);
mDatePicker.setTitle("Please select date");
mDatePicker.updateDate(1994, 6, 12);
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
打印所选日期的简单方法是:
picker.addOnPositiveButtonClickListener {
tv_date.text = "picker.headerText"
}
picker
是 DatePicker class 的对象。
在我的应用程序中,我有一个日期选择器,我能够 select 并在 textview 中设置 selected 日期,但问题是如果我再次单击 textview 以打开日期选择器对话框,它总是显示当前日期而不是上次 selected 日期..那么问题是什么?
public class MainActivity extends Activity {
private TextView date_dropdown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
date_dropdown=(TextView)findViewById(R.id.shows_dt);
Calendar calendar = Calendar.getInstance();
date_dropdown.setText(calendar.get(Calendar.DAY_OF_MONTH) + "-"
+ (calendar.get(Calendar.MONTH) + 1) + "-"
+ calendar.get(Calendar.YEAR));
date_dropdown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePickerDialog();
}
});
}
public void showDatePickerDialog() {
System.out.println("show date picke dilg ");
System.out.println("show date picke dilg");
DialogFragment newFragment1 = new SelectDateFragment();
newFragment1.show(getFragmentManager(), "DatePicker");
}
public class SelectDateFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm + 1, dd);
}
public void populateSetDate(int year, int month, int day) {
date_dropdown.setText(day + "-" + month + "-" + year);
}
}
您给定的行下方仅获取当前日期, 所以你只会得到当前日期。
date_dropdown.setText(calendar.get(Calendar.DAY_OF_MONTH) + "-"
+ (calendar.get(Calendar.MONTH) + 1) + "-"
+ calendar.get(Calendar.YEAR));
在共享首选项中保存您选择的日期,然后在您的 TextView 中显示
看起来你每次点击都在创建一个新对话框,这意味着 onCreateDialog
再次将日期设置为当前时间。你想要一个 class 变量 DialogFragment df
,并在你的 showDatePickerDialog
中做这样的事情:
public void showDatePickerDialog() {
if (df == null){
// Only create a new fragment if one does not exist
DialogFragment df = new SelectDateFragment();
}
df.show(getFragmentManager(), "DatePicker");
}
您还需要在 onPause
方法中存储用户选择的值,并在 onResume
中将 DialogFragment
设置为该值,以防您的用户离开您的应用程序正在输入信息。
您应该在 onCreate()
方法中定义日历实例,然后更新所有年份的月份和日期值 onDateSet()
,因此当您再次打开日期选择器对话框时,它会显示之前选择的日期。
照这样做
public class MainActivity extends Activity {
private TextView date_dropdown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Calendar calendar = Calendar.getInstance();
int yy1 = calendar.get(Calendar.YEAR);
int mm1 = calendar.get(Calendar.MONTH);
int dd1 = calendar.get(Calendar.DAY_OF_MONTH);
date_dropdown=(TextView)findViewById(R.id.shows_dt);
Calendar calendar = Calendar.getInstance();
date_dropdown.setText(calendar.get(Calendar.DAY_OF_MONTH) + "-"
+ (calendar.get(Calendar.MONTH) + 1) + "-"
+ calendar.get(Calendar.YEAR));
date_dropdown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePickerDialog();
}
});
}
public void showDatePickerDialog() {
System.out.println("show date picke dilg ");
System.out.println("show date picke dilg");
DialogFragment newFragment1 = new SelectDateFragment();
newFragment1.show(getFragmentManager(), "DatePicker");
}
public class SelectDateFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new DatePickerDialog(getActivity(), this, yy1, mm1, dd1);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm + 1, dd);
yy1 = yy ;
mm1 = mm;
dd1 = dd ;
}
public void populateSetDate(int year, int month, int day) {
date_dropdown.setText(day + "-" + month + "-" + year);
}
}
How to disable future date picker in android
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
ed_date.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Calendar mcurrentDate=Calendar.getInstance();
year=mcurrentDate.get(Calendar.YEAR);
month=mcurrentDate.get(Calendar.MONTH);
day=mcurrentDate.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday)
{
ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
int month_k=selectedmonth+1;
}
},year, month, day);
mDatePicker.setTitle("Please select date");
// TODO Hide Future Date Here
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
// TODO Hide Past Date Here
// mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mDatePicker.show();
}
});
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
ed_date.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Calendar mcurrentDate=Calendar.getInstance();
year=mcurrentDate.get(Calendar.YEAR);
month=mcurrentDate.get(Calendar.MONTH);
day=mcurrentDate.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday)
{
ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
int month_k=selectedmonth+1;
}
},year, month, day);
mDatePicker.setTitle("Please select date");
// TODO Hide Future Date Here
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
// TODO Hide Past Date Here
// mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mDatePicker.show();
}
});
通过在日期选择器中设置上一个选定日期来更新日期
mDatePicker.updateDate(1994, 6, 12);
mDatePicker.setTitle("Please select date");
mDatePicker.updateDate(1994, 6, 12);
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
打印所选日期的简单方法是:
picker.addOnPositiveButtonClickListener {
tv_date.text = "picker.headerText"
}
picker
是 DatePicker class 的对象。