Android: повторно использовать DatePicker - PullRequest
1 голос
/ 02 апреля 2012

Мне нужна помощь с DatePicker. Я последовал руководству developer / android.com и создал свой DatePicker. Проблема в том, что мне нужно использовать средство выбора даты практически во всех моих действиях .. Итак, как мне повторно использовать мой MyDatePicker класс в другой деятельности без необходимости писать весь код каждый раз?

edit2:

public class MyDatePicker extends DatePicker {

                    private EditText mDateDisplay; 
                    private Button mPickDate;
                    private int mYear;
                    private int mMonth;
                    private int mDay;

                    static final int DATE_DIALOG_ID = 0;

                    public MyDatePicker(Context context, AttributeSet attrs, int defStyle) {
                        super(context, attrs, defStyle);
                                           ///all methods 

Мне не нужен только простой виджет в макете, мне нужен виджет, который открывается нажатием кнопки ... это меняет мое поле EditText. добавив «класс адресов» в компилятор макета, я сказал: Следующие классы не могут быть созданы: MyDatePicker.

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Проверьте это

class MyDataPicker extends DatePickerDialog{
    int year,  monthOfYear, dayOfMonth;
    final Calendar c;
    Date d1;
    public MyDataPicker(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth){ 
        super(context,  callBack, year, monthOfYear, dayOfMonth);
        this.year=year;  this.monthOfYear=monthOfYear; this.dayOfMonth=dayOfMonth;
         d1= new Date(year,  monthOfYear, dayOfMonth);
        c = Calendar.getInstance();
        // TODO Auto-generated constructor stub
    }

    public void onDateChanged(DatePicker datepicker, int year, int month, int day){
            long timeinmilies = d1.getTime();
            Date d = new Date(year, month,day);
            long millis = d.getTime();
            if(millis<=timeinmilies){
                this.year = year; this.monthOfYear = month; this.dayOfMonth = day;
            }
            datepicker.updateDate(this.year,  monthOfYear, dayOfMonth);
            super.onDateChanged(datepicker,this.year,  monthOfYear, dayOfMonth);
    }
}






private DatePickerDialog.OnDateSetListener myDateSetListener
  = new DatePickerDialog.OnDateSetListener(){
   @Override
   public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

    // TODO Auto-generated method stub

    // set Date in EditText or textView Here

    DOB.setText((monthOfYear+1)+"-"+dayOfMonth+"-"+year);
   }


 };



// button click to open datepicker

public void onClickPickDate(View view){
    final Calendar c = Calendar.getInstance();
    int myYear = c.get(Calendar.YEAR);
    int myMonth = (c.get(Calendar.MONTH));
    int  myDay = c.get(Calendar.DAY_OF_MONTH);

  MyDataPicker datePickerDialog =  new MyDataPicker(this,myDateSetListener,myYear, myMonth, myDay);

  datePickerDialog.show();
}
0 голосов
/ 02 апреля 2012

Поскольку вы создали пользовательский указатель даты, вы можете использовать его в любом из макетов как обычный вид, просто указав его как часть макета.Например:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res/jembalang.comfest.game"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <com.game.MyDatePicker
    android:id="@+id/game_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
  </com.game.MyDatePicker>
  <Button 
    android:text="Button" 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
  </Button>
</LinearLayout>

Вам необходимо использовать его, указав packagename.customviewname .В приведенном выше примере com.game - это пакет, в котором хранится MyDatePicker.

0 голосов
/ 02 апреля 2012

создайте класс clss, расширив указатель даты, чтобы иметь свою функциональность, и просто используйте его в макетах xml, как и любой другой компонент. Вы можете использовать что-то вроде lke

 <com.yourpackagename.yourdatepickerclass....
...