gpt4 book ai didi

java - 如何使用两个按钮实现多个日期选择器功能并保存选择的那些日期?

转载 作者:行者123 更新时间:2023-11-30 02:08:26 26 4
gpt4 key购买 nike

我想创建一个 Activity ,其中我想要有两个按钮和多个标签。用户可以单击按钮来选择开始日期和结束日期。而那些选定的日期可以显示在标签中,以便用户可以知道用户已经选择了哪些日期。

任何人都可以指导我如何做到这一点。

  1. 使用多个日期选择器功能,两个按钮上只有两个日期选择器。
  2. 如何保存这些日期。因此,每当用户离开此 Activity 并再次访问时,他可能会知道。

最佳答案

我已经创建了 DatePickerFragment 辅助类,有了它,您只需使用一个 DatePickerFragment 类就可以选择任意数量的日期。

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

/**
* The callback interface used to indicate the user is done filling in the date (they clicked on the 'Set' button).
*/
public interface OnDateSetListener {

/**
* @param dialog The view associated with this listener.
* @param year The year that was set.
* @param monthOfYear The monthOfYear that was set.
* @param dayOfMonth The dayOfMonth that was set.
*/
void onDateSet(DatePicker dialog, int year, int monthOfYear, int dayOfMonth, int reqCode);
}

private OnDateSetListener mListener;
private int reqCode;
public void setOnDateSetListener(OnDateSetListener mListener, int reqCode){
this.mListener = mListener;
this.reqCode = reqCode;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

int year;
int month;
int day;
final Calendar c = Calendar.getInstance();
Bundle bundle = this.getArguments();
if(bundle!=null) {
// Use the given date as the default date in the picker
year = bundle.getInt("YEAR");
month = bundle.getInt("MONTH");
day = bundle.getInt("DAY");
}else{
// Use the current date as the default date in the picker
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
}

// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
if(mListener!=null)
mListener.onDateSet(view, year, monthOfYear, dayOfMonth, reqCode);
this.dismiss();
}
}

在 Activity 或 Fragment 中使用

public class MainActivity extends FragmentActivity implements DatePickerFragment.OnDateSetListener {
private static final int FROM_DATE_TAG = 2404;
private static final int TO_DATE_TAG = 2405;

@Override
public void onClick(View view) {
FragmentManager fragmentManager = getSupportFragmentManager();
DatePickerFragment fragment;
switch(view.getId()){
case R.id.fromDate:
fragment = new DatePickerFragment();
fragment.setOnDateSetListener(this, FROM_DATE_TAG);
fragment.show(fragmentManager, "Date Picker");
break;
case R.id.toDate:
fragment = new DatePickerFragment();
fragment.setOnDateSetListener(this, TO_DATE_TAG);
fragment.show(fragmentManager, "Date Picker");
break;
}
}

//If you want to update the alredy selected date, Specify it in budle. DatePickerFragment will take specified bundle date as default date.
private void updateDate() {
//get to date stored in SharedPrefrence
String toDate = SharedPrefrenceUtils.getString(mContext, "FROM_DATE");
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy", Locale.getDefault());
Date parse = sdf.parse(toDate);
Calendar c = Calendar.getInstance();
c.setTime(parse);
FragmentManager fragmentManager = this.getActivity().getSupportFragmentManager();
DatePickerFragment fragment = new DatePickerFragment();
Bundle bundle = new Bundle();
bundle.putInt("YEAR", c.get(Calendar.YEAR));
bundle.putInt("MONTH", c.get(Calendar.MONTH));
bundle.putInt("DAY", c.get(Calendar.DATE));
fragment.setArguments(bundle);
fragment.setOnDateSetListener(this, FROM_DATE_TAG);
fragment.show(fragmentManager, "Date Picker");
}

@Override
public void onDateSet(DatePicker dialog, int year, int monthOfYear, int dayOfMonth, int reqCode) {
if(reqCode == FROM_DATE_TAG){
Calendar myCalendar = Calendar.getInstance();
myCalendar.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy", Locale.getDefault());
String dateString = formatter.format(myCalendar.getTime());
Log.i("From Date","DATE:"+dateString);//"Result = DATE:May 24, 2015"
//Store FROM_DATE in SharedPrefrence
SharedPrefrenceUtils.putString(mContext,"FROM_DATE", dateString);
} else if(reqCode == TO_DATE_TAG){
Calendar myCalendar = Calendar.getInstance();
myCalendar.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy", Locale.getDefault());
String dateString = formatter.format(myCalendar.getTime());
Log.i("To Date","DATE:"+dateString);//"Result = DATE:May 25, 2015"
//Store TO_DATE in SharedPrefrence
SharedPrefrenceUtils.putString(mContext,"TO_DATE", dateString);
}
}
}

引用How to display SharedPreference stored data in Fragment?对于 SharedPrefrenceUtils 类。

关于java - 如何使用两个按钮实现多个日期选择器功能并保存选择的那些日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30431250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com