我按照以下指南创建了一个带有时间选择器的 fragment :
http://developer.android.com/guide/topics/ui/controls/pickers.html
现在我想将设置的时间发送回持有 fragment 的 Activity 。我搜索了如何做,我发现了这个:
http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
我试图在我的 Fragment 中创建一个 onTimeSet 接口(interface),但由于我正在实现 TimePickerDialog.OnTimeSetListener,它要求我重写 onTimeSet 方法。我发现我可以简单地调用 getActivity() 发送数据,但我不确定这是否是一个好的选择,因为 android 开发页面建议使用接口(interface)方法。
我该怎么办?
这是一些代码:
public class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// WHAT TO DO??
}
}
在我的 Activity 中:
.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(CreateStopActivity.this.getSupportFragmentManager(), "timePicker");
}
});
最佳答案
你可以用构造函数传递它。
Button timeBtn;
public TimePickerFragment(Button btn) {
timeBtn = btn;
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
timeBtn.setText(hourOfDay + ":" + minute);
}
关于Android:将Time Picker Fragment数据发送到Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750803/