I'm porting my app from AsyncTasks to Fragements.
But how can I access the listView (id: list) element within my fragment?
class MyFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.list_fragment, container, false);
ListView listView = getListView(); //EX:
listView.setTextFilterEnabled(true);
registerForContextMenu(listView);
return v;
}
}
xml:
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
Ex:
Caused by: java.lang.IllegalStateException: Content view not yet created
as the onCreateView doc stays:
creates and returns the view hierarchy associated with the fragment
so since the method does not return, you will are not able to access the ListView through getListView(). You can obtain a valid reference in the onActivityCreated callback.
Or you can try using v.findViewById(android.R.id.list) if the ListView is declared inside list_fragment.xml
get list View from the view, you are getting earlier.
View view = inflater.inflate(android.R.layout.list_content, null);
ListView ls = (ListView) view.findViewById(android.R.id.list);
// do whatever you want to with list.
The easiest and more reliable solution to this problem will be to override onActivityCreated(); and do your list manipulations there.
@Override
public void onActivityCreated(Bundle savedInstanceState) {
ListView listView = getListView(); //EX:
listView.setTextFilterEnabled(true);
registerForContextMenu(listView);
super.onActivityCreated(savedInstanceState);
}
I was able to access the ListView by the OnViewCreated method instead.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With