我有一个调用DatePicker的方法和一个调用TimePicker的方法,它们都存储在DialogFragment中。设置日期或时间后,所选日期/时间将传递到主Activity上的TextView。我遇到的问题是,如果我设置其中一个TextView字段,那么去设置另一个,第一个丢失它的值。
我使用以下方法加载DatePicker / TimePicker:
public void showTimePickerDialog(View view) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getFragmentManager(), "timePicker");
}
public void showDatePickerDialog(View view) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
从我的DatePickerFragment / TimePickerFragment中调用以下内容来设置标签/ TextViews:
public void setDateLabel(String text) {
setContentView(R.layout.activity_create_ridely);
dateTextView = (TextView)findViewById(R.id.dateTextView);
dateTextView.setText(text);
this.date = text;
}
public void setTimeLabel(String text) {
setContentView(R.layout.activity_create_ridely);
timeTextView = (TextView)findViewById(R.id.timeTextView);
timeTextView.setText(text);
this.time = text;
}
我知道选择器正在工作的日期和时间,因为它们按预期填充标签/文本视图。
我读了onSaveInstanceState / onResumeInstanceState,并且没有通过在每个方法中放入Log.d(“RidelyApp”,“方法名称”)和onCreate方法,但是在过程中没有调用它们。设置日期/时间。
编辑:
我发现问题似乎源于哪里,而且当我从片段中调用setDateLabel / setTimeLabel方法时。为此,我使用以下方法:
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String pickedDate = "" + dayOfMonth + "/" + monthOfYear + "/" + year;
((CreateRidelyActivity)getActivity()).setDateLabel(pickedDate);
}
如果我将((CreateRidelyActivity)getActivity()).setDateLabel(pickedDate);
替换为Log.d("RidelyApp", pickedDate);
,请选择不删除先前所选值的日期/时间。
所以问题就变成了,将所选日期/时间发送回我的活动的正确方法是什么?
如果需要更多代码,请告诉我并将其添加进去。