android:layout_height='fill_parent'

>

 <TextView android:id='@+id/dateAndTime'

  android:layout_width='fill_parent'

  android:layout_height='wrap_content'

 />

 <Button android:id='@+id/dateBtn'

  android:layout_width='fill_parent'

  android:layout_height='wrap_content'

  android:text='Set the Date'

 />

 <Button android:id='@+id/timeBtn'

  android:layout_width='fill_parent'

  android:layout_height='wrap_content'

  android:text='Set the Time'

 />

</LinearLayout>

The more interesting stuff comes in the Java source:

public class ChronoDemo extends Activity {

 DateFormat fmtDateAndTime = DateFormat.getDateTimeInstance ();

 TextView dateAndTimeLabel;

 Calendar dateAndTime = Calendar.getInstance();

 DatePickerDialog.OnDateSetListener d =

  new DatePickerDialog.OnDateSetListener() {

  public void onDateSet(DatePicker view, int year, int monthOfYear,

   int dayOfMonth) {

   dateAndTime.set(Calendar.YEAR, year);

   dateAndTime.set(Calendar.MONTH, monthOfYear);

   dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);

   updateLabel();

  }

 };

 TimePickerDialog.OnTimeSetListener t =

  new TimePickerDialog.OnTimeSetListener() {

  public void onTimeSet(TimePicker view, int hourOfDay,

   int minute) {

   dateAndTime.set(Calendar.HOUR_OF_DAY, hourOfDay);

   dateAndTime.set(Calendar.MINUTE, minute);

   updateLabel();

  }

 };

 @Override

 public void onCreate(Bundle icicle) {

  super.onCreate(icicle);

  setContentView(R.layout.main);

  Button btn = (Button)findViewById(R.id.dateBtn);

  btn.setOnClickListener(new View.OnClickListener() {

   public void onClick(View v) {

    new DatePickerDialog(ChronoDemo.this, d,

     dateAndTime.get(Calendar.YEAR), dateAndTime.get (Calendar.MONTH),

     dateAndTime.get(Calendar.DAY_OF_MONTH)).show ();

   }

  });

  btn = (Button)findViewById(R.id.timeBtn);

  btn.setOnClickListener(new View.OnClickListener() {

   public void onClick(View v) {

    new TimePickerDialog(ChronoDemo.this, t,

     dateAndTime.get(Calendar.HOUR_OF_DAY), dateAndTime.get(Calendar.MINUTE),

     true).show();

   }

  });

  dateAndTimeLabel = (TextView)findViewById (R.id.dateAndTime);

  updateLabel();

 }

 private void updateLabel() {

  dateAndTimeLabel.setText(fmtDateAndTime.format (dateAndTime.getTime()));

 }

}

The “model” for this activity is just a Calendar instance, initially set to be the current date and time. We pour it into the view via a DateFormat formatter. In the updateLabel() method, we take the current Calendar, format it, and put it in the TextView.

Each button is given a OnClickListener callback object. When the button is clicked, either a DatePickerDialog or a TimePickerDialog is shown. In the case of the DatePickerDialog, we give it a OnDateSetListener callback that updates the Calendar with the new date (year, month, day of month). We also give the dialog the last-selected date, getting the values out of the Calendar. In the case of the TimePickerDialog, it gets a OnTimeSetListener callback to update the time portion of the Calendar,

Вы читаете Beginning Android
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату