0
從片段返回值的片段我調用一個對話從定製對話框
private void showDateDialog(){
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = new DatePickerDialogFragment((Fragment)this,localCalendar);
newFragment.show(ft, "dialog");
}
然後在定製對話框我所說的timesetlistener
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = LayoutInflater.from(getActivity());
final View v = inflater.inflate(R.layout.time_dialog, null);
timePicker=(TimePicker)v.findViewById(R.id.timePicker1);
timePicker.setIs24HourView(true);
if (data!=null) {
timePicker.setCurrentHour(data.get(Calendar.HOUR_OF_DAY));
timePicker.setCurrentMinute(data.get(Calendar.MINUTE));
}
timePicker.setScaleX(2);
timePicker.setScaleY(2);
return new TimePickerDialog.Builder(getActivity())
.setTitle(R.string.timeDialog1)
.setView(v)
.setCancelable(true)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//validation code
OnTimeSetListener otsl=(OnTimeSetListener)mFragment;
otsl.onTimeSet(timePicker, timePicker.getCurrentHour(), timePicker.getCurrentMinute());
}
})
.setNegativeButton(R.string.annulla, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).create();
}
,並在片段我實施OnTimeSetListener得到的值
public void onTimeSet(TimePicker view, int hour, int minute) {
localCalendar.set(Calendar.HOUR_OF_DAY, hour);
localCalendar.set(Calendar.MINUTE, minute);
updateTime(hour,minute);
}
這工作正常。但我想另一個自定義對話框返回一個字符串,我不知道哪個偵聽器實現。我試過「onDismiss」,但我不能傳遞參數,我試着OnValueChangeListener,但作爲參數有2個整數(我需要一個字符串!)。 這是正確的方法嗎?我的意思是,使用聽衆。
好處是,從任何片段,實現onDateChange我可以啓動對話框並檢索值。