如何在android中的片段中放入listview?

jac*_*sta 1 java android listview fragment

我试图在我的片段中放入一个简单的列表视图.当我按原样运行时,我收到错误.我没想到它可以使用我现有的代码,但我不知道从哪里开始.任何帮助将不胜感激!

我的代码:

public class Tab1Fragment extends ListFragment {

ListView listView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    LinearLayout theLayout = (LinearLayout) inflater.inflate(R.layout.tab1, container, false);
    listView = (ListView)theLayout.findViewById(R.id.ListView01);
    return theLayout;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Use an existing ListAdapter that will map an array
    // of strings to TextViews
    setListAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(),
            android.R.layout.simple_list_item_1, mStrings));
    getListView().setTextFilterEnabled(true);
}

private String[] mStrings = {
        "Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
        "Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
    };
Run Code Online (Sandbox Code Playgroud)

}

我的运行时错误:

07-19 11:42:45.214: E/AndroidRuntime(19873): FATAL EXCEPTION: main
07-19 11:42:45.214: E/AndroidRuntime(19873): java.lang.RuntimeException: Unable to start activity ComponentInfo{package/package.TabActionBarActivity}: java.lang.IllegalStateException: Content view not yet created
07-19 11:42:45.214: E/AndroidRuntime(19873):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-19 11:42:45.214: E/AndroidRuntime(19873):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-19 11:42:45.214: E/AndroidRuntime(19873):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
07-19 11:42:45.214: E/AndroidRuntime(19873):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
Run Code Online (Sandbox Code Playgroud)

tre*_*r-e 7

您应该尝试调用setListAdapter()onActivityCreated()方法.这是因为活动尚未完全由onCreate()片段方法创建,因为每个片段的生命周期略有不同.

这是一个类似的问题:Android Fragment onCreateView与onActivityCreated


azg*_*fer 5

片段中的几个问题:

  1. 如果您正在使用ListFragment,那么在XML布局中,您必须具有ID为"android.R.id.list"的ListView.
  2. 在onViewCreated()而不是onCreate()中调用setListAdapter()方法.这是因为在onCreateView()之前首先调用onCreate().