【发布时间】:2014-07-30 01:44:14
【问题描述】:
我正在尝试从片段中打开 Dialogfragment。 dialogFragment 有一个 Timepicker,我想将选定的小时和分钟从 timepicker 返回到调用片段。我怎样才能做到这一点?我从问题中尝试了以下内容,但无法使其工作。有人可以为以下解决方案提供伪代码(显示在最后)
我的代码显示片段中的对话框:
TimePickerFragment timepicker = TimePickerFragment.newInstance(1);
timepicker.show(getFragmentManager(), "timepickerfrag");
Dialogfragment的代码:
public class TimePickerFragment extends DisplayDialogFragment implements View.OnClickListener {
private static final String ARG_PARAM1 = "param1";
private int mParam1;
private TimePicker time;
private Button bt1, bt2;
private TimePicker tm;
public static TimePickerFragment newInstance(int param1) {
TimePickerFragment fragment = new TimePickerFragment();
fragment.setStyle(DialogFragment.STYLE_NO_TITLE, 0);
Bundle args = new Bundle();
args.putInt(ARG_PARAM1, param1);
fragment.setArguments(args);
return fragment;
}
public TimePickerFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getInt(ARG_PARAM1);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_time_picker_scheduler, container, false);
bt1 = (Button) view.findViewById(R.id.sched_time_pck_btn_ok);
bt2 = (Button) view.findViewById(R.id.sched_time_pck_btn_cancel);
tm = (TimePicker) view.findViewById(R.id.sched_dialog_time_picker);
bt1.setOnClickListener(this);
bt2.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sched_time_pck_btn_cancel:
dismiss();
break;
case R.id.sched_time_pck_btn_ok:
dismiss();
break;
}
}
}
Receive result from DialogFragment
在显示对话框的地方使用 myDialogFragment.setTargetFragment(this, MY_REQUEST_CODE),然后在对话框完成后,您可以从中调用 getTargetFragment().onActivityResult(getTargetRequestCode(), ... ),并在包含的片段中实现 onActivityResult()。 这似乎是对 onActivityResult() 的滥用,尤其是因为它根本不涉及活动。但是我已经看到了官方 google 人推荐的,甚至可能在 api 演示中。我认为这是添加 g/setTargetFragment() 的目的。
【问题讨论】:
标签: android android-fragments android-dialogfragment timepicker