ListFragment如何获得listView?

我将我的应用程序从AsyncTasks移植到Fragements。

但是我怎样才能访问我的片段内的listView(id:list)元素?

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> 

例如:

 Caused by: java.lang.IllegalStateException: Content view not yet created 

作为onCreateView文档保持:

 creates and returns the view hierarchy associated with the fragment 

所以既然方法不返回,你将无法通过getListView()访问ListView 。 您可以在onActivityCreatedcallback中获取有效的引用。 或者你可以尝试使用v.findViewById(android.R.id.list)如果ListView是在list_fragment.xml声明的

从列表中查看,您正在获得更早。

 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. 

这个问题的最简单和更可靠的解决scheme将重写onActivityCreated(); 并在那里做你的列表操作。

 @Override public void onActivityCreated(Bundle savedInstanceState) { ListView listView = getListView(); //EX: listView.setTextFilterEnabled(true); registerForContextMenu(listView); super.onActivityCreated(savedInstanceState); } 

我可以通过OnViewCreated方法来访问ListView。

 ListFragment listFrag = new ListFragment(){ @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ListView list = getListView(); // DO THINGS WITH LIST } };