2012-04-02 71 views
1

我需要一個DatePicker。我幫跟着教程開發者/ android.com和我創造了我的日期選擇器。問題是我需要在幾乎所有的活動中使用日期選擇器。 那麼,如何在其他活動中重用我的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。

回答

0

通過延長日期選擇器讓你的功能,並且只需使用它通過XML佈局就像任何其他component.You可以使用的東西艾克

<com.yourpackagename.yourdatepickerclass.... 
+0

我想我錯了實例,編輯我的第一篇文章 – Tony 2012-04-02 18:26:53

+0

你能證明你的代碼......在這裏你得到錯誤 ESP系。 – 2012-04-03 04:46:25

+0

y,我不需要佈局中的簡單小部件,我需要通過按下按鈕打開的小部件。這會更改我的EditText字段。 我需要重複使用此功能在許多活動......都是這個:http://developer.android.com/resources/tutorials/views/hello-datepicker.html我需要在我的所有活動使用 – Tony 2012-04-03 15:54:22

0

既然你已經做了一個自定義的日期選擇器創建一個CLSS,你可以重複使用它只需將其指定爲佈局的一部分即可將任何佈局視爲普通視圖。例如:

<?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> 

您需要通過specifiting packagename.customviewname使用它。在上面的例子中,com.game是保存MyDatePicker的包。

+0

我認爲我錯了實例化。 – Tony 2012-04-02 18:30:37

+0

你是如何實例化的。張貼一些代碼。另外,請不要使用名稱DatePicker作爲您的活動。通常這樣的小事情會導致問題 – Akhil 2012-04-03 05:14:50

+0

現在我很困惑,您已經創建了一個名爲DatePicker的Activity。然後你試圖在MyDatePicker中擴展它。我正在討論Android中的DatePicker小部件。 – Akhil 2012-04-03 05:17:37

1

看看這個

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