このガイダンスに従って、タイムピッカーを使用してフラグメントを作成しました。
http://developer.android.com/guide/topics/ui/controls/pickers.html
ここで、フラグメントを保持しているアクティビティに設定時間を送り返したいと思います。やり方を調べたところ、こんなのを見つけました。
http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
Fragment で onTimeSet のインターフェイスを作成しようとしましたが、TimePickerDialog.OnTimeSetListener を実装しているため、onTimeSet メソッドをオーバーライドするように要求されます。getActivity() を呼び出すだけでデータを送信できることがわかりましたが、Android 開発ページではインターフェイス メソッドの使用が推奨されているため、それが適切なオプションかどうかはわかりません。
私は何をすべきか?
ここにいくつかのコードがあります:
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??
}
}
私の活動では:
.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(CreateStopActivity.this.getSupportFragmentManager(), "timePicker");
}
});