0

Activity クラスを拡張しないクラスから DatePicker ダイアログを作成しようとしています。Activity Context を含む Context 属性を持つ EnterDate というクラスに DatePicker が必要です。

Web 上の DatePicker の例はすべて、Activity クラスで記述された基本的なものであり、それが私を混乱させる理由です。

Android 3.0 以前でうまく動作する日付ピッカーが必要です。XML レイアウトは使用しません。

したがって、基本的に onCreateDialog() を配置する場所、選択した時間を取得する方法などの提案が必要です。

DatePicker を呼び出すための onClickListener() を持つボタンがあります。

1 時間前に、TimePicker について同じ質問をして、次の回答を得まし た。Activity、Android を拡張しないクラスから TimePicker を作成する方法は?

そのソリューションは、DatePicker のように機能するためにわずかな変更を加えるだけでよいと思います。

TNX

4

2 に答える 2

1

変更されたクラス

public class MyDatePicker {
DatePickerDialog mDatePickerDialog;


public interface onDateSet {
    public void onDate(DatePicker view, int year, int monthOfYear,
            int dayOfMonth);
}

onDateSet mOnDateSet;

public void setDateListener(onDateSet mOnDateSet) {
    this.mOnDateSet = mOnDateSet;
}
public MyDatePicker(Context ctx) {
    mDatePickerDialog = new DatePickerDialog(ctx, new OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            mOnDateSet.onDate(view, year, monthOfYear, dayOfMonth);

        }
    }, 2000, 1, 1);
}

public void show() {
    mDatePickerDialog.show();
}

と..

 public void ShowDatePicker() {
        MyDatePicker myTimePicker = new MyDatePicker(this);
        myTimePicker.show();
    myTimePicker.setDateListener(new onDateSet() {

        @Override
        public void onDate(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            Toast.makeText(MainActivity.this,
                    "date is " + year + ":" + monthOfYear+":"+dayOfMonth,
                    Toast.LENGTH_LONG).show();

        }
    });
}
于 2012-10-09T12:32:24.913 に答える
0

ダイアログを作成して表示するためのアクティビティは必要ありません。コールバックを使用してダイアログを作成し、ヘルパー クラスを使用して初期化データを作成してから、このビルダーDatePickerDialog.Builderを呼び出すことができます。show()

これは、UI スレッドにいる場合にのみ機能します。

于 2012-10-09T12:06:23.300 に答える