[英]How to get the time of the TimePickerDialog in the EditText in another fragment?
I am trying to get the time of my TimePickerDialog
to an EditText
in the FinishPostFragment
. 我正在尝试将我的TimePickerDialog
的时间获取到FinishPostFragment
的EditText
。
I am showing the selected time right now in a Toast but how can I show the data in the EditText
in the FinishPostFragment
? 我现在在Toast中显示所选时间,但是如何在FinishPostFragment
的EditText
中显示数据?
FinishPostFragment in my onCreateView: 我的onCreateView中的FinishPostFragment:
timeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// view TimePickerDialog
showTimeDialog(v);
}
});
FinishPostFragment outside my onCreateView: 我的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: 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: 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;
}
}
@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);
}
try this settting text to your textview like this. 尝试这样将文本放置到您的textview中。
Something close to what you have that might work is the following. 以下是您可能会用到的可能的解决方案。 Have your FinishPostFragment
implement TimePickerDialog.OnTimeSetListener
itself instead. 让您的FinishPostFragment
实现TimePickerDialog.OnTimeSetListener
本身。
Show the TimeDialaogFragment
using getChildFragmentManager()
instead. TimeDialaogFragment
使用getChildFragmentManager()
显示TimeDialaogFragment
。
tdf.show(getChildFragmentManager().beginTransaction(), "TimePickerFragment");
That will make it so you can then do the following in your TimeDialogFragment.onCreateView
to send the selected time directly to the FinishPostFragment
. 这样就可以完成,因此您可以在TimeDialogFragment.onCreateView
执行以下操作,以将所选时间直接发送到FinishPostFragment
。
TimePickerDialog.OnTimeSetListener timeSetListener =
(TimePickerDialog.OnTimeSetListener) getParentFragment();
dialog = new TimePickerDialog(getActivity(), timeSetListener, hour, minute,
android.text.format.DateFormat.is24HourFormat(getActivity()));
Note in order to use getParentFragment()
you must be using the support library or targeting API 17+. 请注意,要使用getParentFragment()
,必须使用支持库或定位API 17+。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.