0

首先让我说我对 Android 很陌生,如果这个问题真的很简单,我很抱歉,但我在 SO 或 Google 中找不到答案。

我正在做一个用于培训的小应用程序,并且我有这个 datePicker 对象:

<DatePicker
    android:id="@+id/datePicker1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="64dp"
    android:calendarViewShown="false"
    android:spinnersShown="true"
    android:onClick="selectDate" />

所以,我已经建立了一个与我拥有的 selectDate 函数的 onClick 连接:

public void selectDate(View view) {
    datePick = (DatePicker) findViewById(R.id.datePicker1);
    int yy = datePick.getYear();
    int mm = datePick.getMonth();
    int dd = datePick.getDayOfMonth();
    Calendar calendar = Calendar.getInstance();
    calendar.set(yy, mm, dd);
    int doy = calendar.get(Calendar.DAY_OF_YEAR);
    populateDayOfYear(doy);
}

但是该应用程序并没有按照预期进行,实际上在调试之后,它甚至从未进入此功能。

因此,为了清楚起见,我想要的是每次更改 datePicker 中的值时更新 EditText 字段的值(doy在 中),我不想按下按钮并被带到 DatePickerDialog然后才能更新 EditText 字段。populateDayOfYear(doy)

是否可以使用标准 datePicker 或者我需要自己构建一个?

4

1 回答 1

2

在 OnCreate 中试试这个

datePick = (DatePicker) findViewById(R.id.datePicker1);
datePick.init(2012,1,1,  new DatePicker.OnDateChangedListener(){

   public void onDateChanged(DatePicker view, int yy, int mm, int dd){
      Calendar calendar = Calendar.getInstance();
      calendar.set(yy, mm, dd);
      int doy = calendar.get(Calendar.DAY_OF_YEAR);
      populateDayOfYear(doy);
   }
  }
);
于 2013-01-29T21:05:56.770 回答