2016-11-20 2 views
0

Я пытаюсь сделать общий метод с помощью Android DatePickerDialog, поэтому вместо использования DatePickerDialog каждый раз он будет вызван через общую функцию и вернет дату. Он может быть частью настраиваемого компонента компонента (например, LinearLayout или NavigationView).DatePickerDialog - параметр контекста в конструкторе не принимается

Однако я застреваю из-за параметра context в конструкторе DatePickerDialog. Он настаивает фактическое имя класса активности, и я что-то похожий параметр т.е. 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

Последняя будет работать, если вы объявили 'activityClassParamter' как' Activity', а не только общий «Context' -« Activity activityClassParamter ». 'Context' для' Dialog' должен быть 'Activity'. –

+0

, где вы хотите сделать функцию? В той же деятельности или где-нибудь? – Real73

+0

@MikeM. - Да, это сработало, спасибо. Я не могу принять этот ответ (галочка не появляется). Можете ли вы ответить еще раз в отдельном потоке, чтобы я мог принять его. – Girish

ответ

0

Для диалога требуется activity context. Диалог не будет работать с application context. Вы можете узнать больше о контексте here.

Объявите activity parameter в своей общей функции диалога и используйте его как контекст.

... genericDialog(Activity activity) { 
    ... new DatePickerDialog(activity /* note activity context here*/ , ....); 
} 

Если вы вызываете это от деятельности, вы можете просто назвать это как

genericDialog(ActivityClassName.this /* reference to activity */) 
Смежные вопросы