Ich möchte die List
eines ListFragment
aktualisieren. Deshalb habe ich eine Methode in meinem ListFragment
:Android - Kontext in ListFragment funktioniert nicht, wenn von AsyncTask in anderen Aktivität aufgerufen
public void setAdapter(List<String> valueList) {
ArrayAdapter adapter = new ArrayAdapter<String>(ctx, android.R.layout.simple_list_item_1, valueList);
setListAdapter(adapter);
adapter.notifyDataSetChanged();
}
Und in meinem Activity
habe ich ein AsyncTask
, wo ich die Methode aufrufen, oben in onPostExecute
:
@Override
protected void onPostExecute(ArrayList<String> valueList) {
OtherClass otherClasst = new OtherClass();
otherclass.setAdapter(valueList);
}
Alles sollte gut funktionieren. Die valueList
ist nicht leer oder sowas und auch die onPostExecute
wird aufgerufen.
So jetzt mein Problem ist, dass wenn ich die Context ctx
im onCreate
Methode meiner ListFragment
initialisieren ich ein NullPointerException
bekommen. Wenn ich es in meiner setAdapter
Methode mit ctx = getActivity
initialisiere, bekomme ich den gleichen Fehler. Das einzige, was ich tun kann, ist, die context
der Klasse mit der AsyncTask
zu bekommen, aber dann wird nichts in der App angezeigt.
Also wie bekomme ich das zum Funktionieren?
stellen Sie den Adapter in onViewCreated-Methode des Fragments – dex
Was ist 'OtherClass' und warum erstellen Sie ein neues? –
Sie müssen die aktuelle Instanz von ListFragment aktualisieren. Wenn Ihr Listenfragment OtherClass heißt, müssen Sie zuerst die aktuelle Instanz abrufen und diese mit der oben genannten setAdapter-Methode aktualisieren. – Neil