如何获取另一个片段中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);
}
像这样尝试将文本设置到您的文本视图。
我正在尝试将我的 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);
}
像这样尝试将文本设置到您的文本视图。