Nach mehreren Stunden der Verzweiflung, in denen mir die Runtime permanent meine OnItemClickListener unter dem Arsch weg gerissen und durch was Eigenes ersetzt hat, hier der ultimative Tipp zur Lösung:
Setzt den Listener nicht in der onCreateView Methode!
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View createdView = inflater.inflate(R.layout.event_list_fragment, container, false);
superView = createdView;
collectedEventsAdapter = new EventAdapter(inflater.getContext());
// Setting up the data
setListAdapter(collectedEventsAdapter);
resultListView = (ListView)createdView.findViewById(android.R.id.list);
Log.e(TAG, "Created view "+createdView);
// This one will fail!
resultListView.setOnItemClickListener(this);
return createdView;
}
Alles anzeigen
Führt zu folgender phänomenaler Ausgabe unglaublicher Verwirrung:
ZitatAlles anzeigen05-18 13:04:25.197: ERROR/OwnListFragment(1390): Attached to activity info.lucasdevil.OwnActivity@405900e0
05-18 13:04:25.207: ERROR/OwnListFragment(1390): Created with bundle null
05-18 13:04:25.839: ERROR/OwnListFragment(1390): Listener set: info.lucasdevil.fragments.OwnListFragment$1@40642028
05-18 13:04:25.839: ERROR/OwnListFragment(1390): Created view android.widget.LinearLayout@406074c8
05-18 13:04:25.839: ERROR/OwnListFragment(1390): Acitivty Created with Bundle null
05-18 13:04:25.839: ERROR/OwnListFragment(1390): View State Restored with Bundle null
05-18 13:04:25.839: ERROR/OwnListFragment(1390): On Start
05-18 13:04:25.839: ERROR/OwnListFragment(1390): getListView().getOnItemClickListener(): android.support.v4.app.ListFragment$2@4054df60
Ich habe nicht den Hauch einer Ahnung wer was wie wann warum wozu wo austauscht, Fakt ist aber, dass der Tab auf ein Listenelement ohne Resonanz bleibt.
Tja, ich war einfach zu früh dran.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View createdView = inflater.inflate(R.layout.event_list_fragment, container, false);
superView = createdView;
collectedEventsAdapter = new EventAdapter(inflater.getContext());
// Setting up the data
setListAdapter(collectedEventsAdapter);
resultListView = (ListView)createdView.findViewById(android.R.id.list);
Log.e(TAG, "Created view "+createdView);
return createdView;
}
@Override
public void onStart()
{
super.onStart();
resultListView.setOnItemClickListener(this);
}
Alles anzeigen
Works like a charm...
Und in der onStart() funktioniert auch getListView() wieder vernünftig.
Die onViewCreate war einfach zu früh für diese Aktionen. Nur unfreundlicherweise hat sie mir das natürlich verschwiegen!