2012-04-09 12 views
0

Ich versuche ListView anzuzeigen.findViewById (R.id.list_view); Rückgabe "Null"

Ich habe eine activity erstellt, in onCreate() Methode, die ich eine AsyncTask am Start und in onPostExecute() Methode Ich versuche Anzeige ListView, dass.

aber listView Objekt empfangen null ..

Unten ist der Code-Schnipsel.

protected void onPostExecute(KpiResponseObject kpiReportResponse) { 
    ListView listView; 
    listView = (ListView) findViewById(R.id.list_view); 
} 

Hier bin ich null in listView Objekt erhalten.

Ich vermute, das ist das context Problem, aber nicht in der Lage herauszufinden, was genau es ist.

+0

Ihre 'AsyncTask' sollte eine innere Klasse sein, also die innere Klasse, in der die Aktivität, die Aktivität die 'R.id.list_view'-Sicht hat oder nicht, und die Aktivität' setContentView' Methode oder nicht? – idiottiger

Antwort

2

Sind Sie sicher, dass Sie setContentView in Ihrer onCreate haben und dann eine ListViewlist_view in XML definiert haben?

1

Das Layout, das Sie in die setContentView() setzen, hat keine Ansicht mit der ID list_view.

1

@brig das ist fast 100% ein Kontextproblem. Sie sollten die findViewByID von einer der überlagernden Ansichten aufrufen. Eine einfache Lösung besteht darin, den Kontext an diese asynctask zu übergeben (ich gehe davon aus, dass es sich um eine asynctask handelt). Im Konstruktor setzen eine memeber

private Context mContext; 

public myAsync(Context context){ 
    mContext = context; 
} 

dann in Ihnen

protected void onPostExecute(KpiResponseObject kpiReportResponse) { 
    ListView listView; 
    listView = (ListView) mContext.findViewById(R.id.list_view); 
} 
+0

Warum wird onPostExecute vom UI-Thread aufgerufen? Und wenn die AsyncTask in Activity geschachtelt ist, ist der Activity-Kontext darauf zugänglich. –

+0

@Alex aber bedeutet es unbedingt, dass es direkten Zugriff auf den gleichen Kontext hätte, selbst wenn es keine innere Klassendefinition wäre? – MikeIsrael

+0

Der Kontext kann zugänglich sein mit ** MyActivity.this ** auch – noob

1

Es nennen ein zwei Grund sein, Sie Nullwert eine bekommen kann, ist nicht setContentView (xml) und die zweite aus welchem ​​Kontext definiert was du Asynctask nennst. Überprüfe dies sowohl die Dinge, die du willst, als auch die Dinge.

Verwandte Themen