如何保存片段的日期和时间状态

问题描述

我有两个EditText。首先,用于打开DatePicker,其次用于打开TimePicker。 我已经为两个组件创建了DialogFragment。两者都有效。全部在片段中。

这是我的片段。当选择的DatePicker时间的价值消失,当我选择TimePicker日期也消失了。我已经有saveInstance了。请帮忙!!谢谢

DialogFragment datePicker;
TimePickerFragment timePicker;

EditText departureEdt;
EditText departureTimeEdt;
String selectedDate;
String selectedTime;

@Override
public void onSaveInstanceState(@NonNull Bundle outState) {

    super.onSaveInstanceState(outState);
    if (outState != null) {
        outState.putString("selectedDate",selectedDate);
        outState.putString("selectedTime",selectedTime);
    }
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {

        selectedDate = savedInstanceState.getString("selectedDate");
        selectedTime = savedInstanceState.getString("selectedTime");

        departureEdt.setText(selectedDate);
        departureTimeEdt.setText(selectedTime);

    }
}


@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
    final FragmentManager fm = ((AppCompatActivity) getActivity()).getSupportFragmentManager();

    View view = inflater.inflate(R.layout.transportation_fragment,container,false);

    departureEdt = view.findViewById(R.id.departure_date);
    departureEdt.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            datePicker = new DatePickerFragment();
            datePicker.setTargetFragment(TransportationFragment.this,1);
            datePicker.show(fm,"datePicker");

        }
    });


    departureTimeEdt = view.findViewById(R.id.departure_time);
    departureTimeEdt.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            timePicker = new TimePickerFragment();
            timePicker.setTargetFragment(TransportationFragment.this,1);
            timePicker.show(fm,"timePicker");


        }
    });
    return view;
}

@Override
public void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        // get date from string
        selectedDate = data.getStringExtra("selectedDate");
        selectedTime = data.getStringExtra("selectedTime");
        // set the value of the editText
        departureEdt.setText(selectedDate);
        departureTimeEdt.setText(selectedTime);
    }
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)