【发布时间】:2018-11-24 17:10:57
【问题描述】:
我创建了一个DialogFragment,它有一个EditText,当用户按下EditText 时,会有一个新的DatePickerDialog,假设从用户那里选择一个日期,然后将其设置在DialogFragment .我很难做到这一点:
- DatePickerDialog 实际出现但破坏了旧的
DialogFragment。当我点击确定/无论我返回活动时。 - 我想将我选择的日期传递回片段。如果我想将它传递回活动会更容易,因为我可以使用
getActivity()方法。那么如何将我选择的日期传递回调用选择器的片段呢?
主要片段
public class NewWorkoutItemFragment extends android.app.DialogFragment implements
View.OnClickListener {
private String mDate;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_new_workout_item, container, false);
//A lot of code
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.NewWorkout_date_et:
//Call to DatePickerDialog
DialogFragment pickDate = new DatePickerFragment();
pickDate.show(getFragmentManager(), "show");
}
public void setmDate(String mDate) {
this.mDate = mDate;
}
}
DatePickerFragment
public class DatePickerFragment extends android.app.DialogFragment implements DatePickerDialog.OnDateSetListener {
@NonNull
@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);
// 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 month, int dayOfMonth) {
String dateString = Integer.toString(dayOfMonth) +
"/" + Integer.toString(month+1) +
"/" + Integer.toString(year);
//note- Return dateString back to NewWorkoutItemFragment, using setmDate
}
}
【问题讨论】:
-
您应该使用
'com.wdullaer:materialdatetimepicker:2.3.0'库来处理datepicker或timepicker对话框。 -
@Raza 我要试试,会更新结果
标签: android android-dialogfragment