如何获取另一个片段中EditText中TimePickerDialog的时间?

How to get the time of the TimePickerDialog in the EditText in another fragment?

我正在尝试将我的 TimePickerDialog 的时间转换为 FinishPostFragment 中的 EditText

我现在正在 Toast 中显示选定的时间,但如何在 FinishPostFragment 中显示 EditText 中的数据?

我的 onCreateView 中的 FinishPostFragment:

timeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // view TimePickerDialog
            showTimeDialog(v);
        }
    });

我的 onCreateView 外的 FinishPostFragment:

public void showTimeDialog(View v){
    TimeDialogFragment tdf = new TimeDialogFragment();
    tdf.show(getFragmentManager().beginTransaction(), "TimePickerFragment");
}

TimePickerDialog.OnTimeSetListener test = new TimePickerDialog.OnTimeSetListener(){
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        time_finish.setText(String.valueOf(hourOfDay) + ":" + String.valueOf(minute));
    }
};

TimeSettings.java:

public class TimeSettings implements TimePickerDialog.OnTimeSetListener {
    Context context;

    public TimeSettings(Context context){
        this.context = context;
    }

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        Toast.makeText(context, "Selected time is hour: " +hourOfDay+ " minute: " + minute, Toast.LENGTH_LONG).show();
    }
}

TimeDialogFragment:

public class TimeDialogFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        Calendar calendar = Calendar.getInstance();

        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);

        TimePickerDialog dialog;

        TimeSettings timeSettings = new TimeSettings(getActivity());
        dialog = new TimePickerDialog(getActivity(), timeSettings, hour, minute,
                android.text.format.DateFormat.is24HourFormat(getActivity()));

        return dialog;
    }
}

以下内容与您所拥有的可能有效。让您的 FinishPostFragment 实现 TimePickerDialog.OnTimeSetListener 本身。

使用 getChildFragmentManager() 显示 TimeDialaogFragment

tdf.show(getChildFragmentManager().beginTransaction(), "TimePickerFragment");

这样就可以了,然后您可以在 TimeDialogFragment.onCreateView 中执行以下操作,将所选时间直接发送到 FinishPostFragment

TimePickerDialog.OnTimeSetListener timeSetListener = 
        (TimePickerDialog.OnTimeSetListener) getParentFragment();

dialog = new TimePickerDialog(getActivity(), timeSetListener, hour, minute,
        android.text.format.DateFormat.is24HourFormat(getActivity()));

请注意,要使用 getParentFragment(),您必须使用支持库或针对 API 17+。

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

Toast.makeText(context, "Selected time is hour: " +hourOfDay+ " minute: " + minute, Toast.LENGTH_LONG).show();
String time = "   "+hourString+"h"+minuteString+"m"+secondString+"s";
    yourTextView.setText(time);

} 

像这样尝试将文本设置到您的文本视图。