我想创建一个活动,在其中我要有两个按钮和多个标签。用户可以单击按钮以选择日期和结束日期。而那些选择的日期可以显示在标签中,以便用户可以知道用户已经选择了哪些日期。
谁能指导我该怎么做。
我已经创建了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();
}
}
在活动或片段中使用它
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);
}
}
}
请参阅如何在Fragment中显示SharedPreference存储的数据?为SharedPrefrenceUtils
类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句