3

このガイダンスに従って、タイムピッカーを使用してフラグメントを作成しました。

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");
        }

    });
4

2 に答える 2

1

コンストラクタで渡すことができます。

    Button timeBtn;

    public TimePickerFragment(Button btn) {
        timeBtn = btn;
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        timeBtn.setText(hourOfDay + ":" + minute);
    }
于 2013-03-30T17:58:55.233 に答える
0

アクティビティにTimePickerDialog.OnTimeSetListenerインターフェイスを実装する必要があると思います。ここでTimePickerFragmentを作成します。このようなSmth:

public class YourActivity extends FragmentActivity implements TimePickerDialog.OnTimeSetListener {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // DO HERE ANYTHING WITH DATA
    }
}

コンストラクターでYoutアクティビティをOnTimeSetListenerとして送信することを忘れないでください。

dialog = new TimePickerDialog(yourContext, yourActivity, hourOfDay, minute, is24HourView);

詳細については、TimePickerDialogをご覧ください

于 2013-02-07T12:35:22.597 に答える