我正在尝试使用Android DatePickerDialog创建一个泛型方法,因此每次使用DatePickerDialog时都会通过泛型函数调用它并返回日期。它也可以是自定义组件组件的一部分(即LinearLayout或NavigationView)。
但是由于DatePickerDialog的构造函数中的context参数,我陷入困境。它坚持实际的活动类名,我看起来像参数,即getContext(),getApplicationContext()等。
工作但不能用于通用方法 - DatePickerDialog datePickerDialog = new DatePickerDialog(RecordActivity3.this, new DatePickerDialog.OnDateSetListener() {
不工作 - DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
不工作 - DatePickerDialog datePickerDialog = new DatePickerDialog(getApplicationContext(), new DatePickerDialog.OnDateSetListener() {
不工作 - DatePickerDialog datePickerDialog = new DatePickerDialog(activityClassParamter, new DatePickerDialog.OnDateSetListener() {
如果您处理过类似问题,请提出建议。
答案 0 :(得分:0)
您需要activity context
才能进行对话。对话框不适用于application context
。您可以阅读有关上下文here的更多信息。
在通用对话框函数中声明activity parameter
并将其用作上下文。
... genericDialog(Activity activity) {
... new DatePickerDialog(activity /* note activity context here*/ , ....);
}
如果您从某个活动中调用此功能,则可以将其称为
genericDialog(ActivityClassName.this /* reference to activity */)