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