2012-10-09 37 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

相关问题