2016-11-20 2 views
0

Ich versuche, eine generische Methode mit Android DatePickerDialog zu erstellen, also wird DatePickerDialog nicht jedes Mal aufgerufen, sondern über eine generische Funktion aufgerufen und das Datum zurückgegeben. Es kann auch Teil einer kundenspezifischen Komponentenkomponente sein (d. H. LinearLayout oder NavigationView).DatePickerDialog - Context-Parameter im Konstruktor akzeptiert nicht

Allerdings stecke ich wegen Context-Parameter im Konstruktor von DatePickerDialog fest. Es bestehen Namen tatsächlichen Aktivitätsklasse, und ich bin etwas suchen, wie Parameter, dh getContext(), getApplicationContext() etc ..

Arbeiten kann aber nicht in generischen Verfahren verwendet werden - DatePickerDialog datePickerDialog = new DatePickerDialog(RecordActivity3.this, new DatePickerDialog.OnDateSetListener() {

Problem - DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {

Problem - DatePickerDialog datePickerDialog = new DatePickerDialog(getApplicationContext(), new DatePickerDialog.OnDateSetListener() {

Problem - DatePickerDialog datePickerDialog = new DatePickerDialog(activityClassParamter, new DatePickerDialog.OnDateSetListener() {

vorschlagen Bitte, falls Sie auf ähnliches Problem gearbeitet haben ..

+0

Die letzte wird funktionieren, wenn Sie 'activityClassParamter' als' Activity' deklariert haben, und nicht nur ein generischer 'Kontext' -' Aktivität activityClassParameter'. Der "Kontext" für einen "Dialog" muss eine "Aktivität" sein. –

+0

wo möchten Sie Funktion in der gleichen Aktivität oder irgendwo? – Real73

+0

@MikeM. - Ja, es hat funktioniert, danke. Ich kann diese Antwort nicht akzeptieren (Tick wird nicht angezeigt). Kannst du bitte nochmal in einem separaten Thread antworten .. damit ich es annehmen kann. – Girish

Antwort

0

Sie benötigen activity context für den Dialog. Dialog funktioniert nicht mit application context. Sie können mehr über den Kontext lesen here.

Deklarieren Sie activity parameter in Ihrer generischen Dialogfunktion und verwenden Sie sie als Kontext.

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

Wenn Sie dies aus einer Tätigkeit nennen, man kann es nur nennen wie

genericDialog(ActivityClassName.this /* reference to activity */)