Android 从对话框片段返回某些内容

Android 从对话框片段返回某些内容,android,Android,我有一个打开对话框片段的活动。在该对话框片段中,用户输入一些文本。我希望在对话框关闭时将此输入文本接收回“活动”。如有任何建议,将不胜感激。多谢各位 调用DialogFrag的活动: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_task_fragment); Action

我有一个打开对话框片段的活动。在该对话框片段中,用户输入一些文本。我希望在对话框关闭时将此输入文本接收回“活动”。如有任何建议,将不胜感激。多谢各位

调用DialogFrag的活动:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_task_fragment);
    ActionBar ab = getActionBar();
    ab.setDisplayHomeAsUpEnabled(true);
    dte = (TextView) findViewById(R.id.datetv);
    tme = (TextView) findViewById(R.id.timetv);
    enteredTask = (EditText) findViewById(R.id.user_entered_task);
    doit = (TextView) findViewById(R.id.title);
    cal = (ImageButton) findViewById(R.id.select_date);
    save = (Button) findViewById(R.id.save_tsk);
    save.setOnClickListener(this);
    cal.setOnClickListener(this);
}
@Override
public void onClick(View view) {
    if (view == cal) {
        FragmentManager fm = getFragmentManager();
        date_time_picker dTP = new date_time_picker();
        dTP.setStyle(DialogFragment.STYLE_NO_TITLE, R.style.myCustomDialog);
        dTP.show(fm, "dTP");
        Log.d("HirakDebug", "add_task_frag setDate called");
    }
这是一个叫做dialogFrag的对话框(用户在这里选择日期和时间以及所有类似的东西)


您可以尝试使用侦听器接口。使您的活动实现接口并将其传递给对话框。只是谷歌一些类似“安卓监听器界面”的东西。
解释了观察者模式。

U可以使用“setTargetFragment”和“getTargetFragment”。有关更多信息,请参阅此链接

你能发布一些代码吗?我更新了问题
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.date_time_picker, container, false);
    timePicker = (TimePicker) v.findViewById(R.id.timePicker);
    timetv = (TextView) v.findViewById(R.id.time);
    datetv = (TextView) v.findViewById(R.id.date);
    dateToday = (TextView) v.findViewById(R.id.date_today);
    dateTomorrow = (TextView) v.findViewById(R.id.date_tomorrow);
    datePick = (TextView) v.findViewById(R.id.pickDate);
    set = (Button) v.findViewById(R.id.set);
    set.setOnClickListener(this);
    datePick.setOnClickListener(this);
    dateToday.setOnClickListener(this);
    dateTomorrow.setOnClickListener(this);
    timePicker.setOnTimeChangedListener(this);
    timePicker.setIs24HourView(false);
    setCancelable(true);
    return v;
}

@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
    Calendar calender = Calendar.getInstance();
    calender.set(Calendar.HOUR_OF_DAY, hourOfDay);
    calender.set(Calendar.MINUTE, minute);
    timePicker.setIs24HourView(false);
    SimpleDateFormat sdf = new SimpleDateFormat("hh : mm a");
    timetv.setText("@ " + sdf.format(calender.getTime()));

}

@Override
public void onClick(View v) {
    if (v == dateToday) {
        Calendar c = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("EE, d MMM yyy");
        datetv.setText("On " + sdf.format(c.getTime()));
    }
    else if (v == dateTomorrow) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DAY_OF_YEAR, 1);
        SimpleDateFormat sdf = new SimpleDateFormat("EE, d MMM yyy");            ;
        String dateTomorrow = sdf.format(calendar.getTime());
        datetv.setText("On " + dateTomorrow);
    }
    else if (v == datePick) {
        setDate();
    }
    else if (v == set){
        Log.d("HirakDebug", "dTP set button pressed");
        String date = "123456";
        Intent i = new Intent();
        Bundle b = new Bundle();
        String dateset = datetv.getText().toString();
        String timeset = timetv.getText().toString();
        b.putString("date", dateset);
        b.putString("time", timeset);
        i.putExtras(b);
        getTargetFragment().onActivityResult(1, Activity.RESULT_OK, i);
        dismiss();
    }
}
public void setDate() {
    new DatePickerDialog(getActivity(), d,
            calender.get(Calendar.YEAR), calender.get(Calendar.MONTH),
            calender.get(Calendar.DAY_OF_MONTH)).show();
    Log.d("HirakDebug", "add_task_frag Date Picker showed");
}

DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker arg0, int year, int month, int day) {

        calender.set(Calendar.YEAR, year);
        calender.set(Calendar.MONTH, month);
        calender.set(Calendar.DAY_OF_MONTH, day);
        Log.d("HirakDebug", "add_task_frag Date was selected and updatedate called");
        updatedate();
    }
};

public void updatedate() {
    SimpleDateFormat sdf = new SimpleDateFormat("EE, d MMM yyy");
    datetv.setText("On " + sdf.format(calender.getTime()));
    Log.d("HirakDebug", "add_task_frag Date was updated");
}

}