打开片段后Android TextView失去价值

时间:2015-05-23 09:49:43

标签: java android textview datetimepicker

我有一个调用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);,请选择不删除先前所选值的日期/时间。

所以问题就变成了,将所选日期/时间发送回我的活动的正确方法是什么?

如果需要更多代码,请告诉我并将其添加进去。

0 个答案:

没有答案