2012-10-09 43 views
0

我想從不擴展Activity類的類創建DatePicker對話框。我需要DatePicker在一個名爲EnterDate的類中,它具有包含Activity Context的Context屬性。如何從不擴展Activity的Android類創建DatePicker?

WEB上的DatePicker的所有示例都是基本的,在Activity類中編寫,這就是爲什麼他們讓我困惑。

我希望日期選取器能夠在Android 3.0以上的版本上運行良好。我不使用XML佈局。

所以基本上我需要建議放在哪裏onCreateDialog(),如何檢索選定的時間,等

我有按鈕,有onClickListener()調用一個datepicker。

一個小時前,我問過的TimePicker一個同樣的問題,得到了這樣的回答: How to create a TimePicker from class which do not extends Activity, Android?

我認爲這個解決方案只需要稍作修改喜歡的DatePicker工作..

TNX

+1

我想你應該給一些努力,這個...如果你發現任何問題,然後來到這裏... –

+0

尊敬的先生Mohsin,我做到了!我創建了一個非常類似於上一個問題中建議我的類,但有一些NumberPicker。該解決方案中的java異常。就像我告訴我,我認爲這個問題的答案非常類似於以前的答案。而且,我認爲這對其他用戶也是有用的。我認爲你的-1票是沒有道理的。仍然感謝你的幫助...伊凡 – Majstor

+0

對不起,但莫辛先生是絕對正確的。 – m0skit0

回答

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

     } 
    }); 
} 
+1

在我發佈這個問題之前,我已經創建了一個像這樣的類,只有不同之處:mDatePickerDialog = new DatePickerDialog(ctx,... ,2,1,1);而那個「2」就是例外。現在,用您的代碼我將其更改爲2000,並且所有工作都正常。非常感謝Moshin先生。萬分感激。 – Majstor

0

您不需要創建和顯示對話框的活動。您可以使用助手類DatePickerDialog.Builder創建具有回調和初始化數據的Dialog,然後爲此構建器調用show()

只有當您在UI線程中時,這纔會有效。

+0

你可能想給他關於'Activity.runOnUIThread()'的建議:) – m0skit0

相關問題