简体   繁体   English

如何在Android的片段中放入列表视图?

[英]How to put a listview inside of a fragment in android?

I'm trying to put a simple listview inside my fragment. 我试图在片段中放入一个简单的listview。 I'm getting an error when I run it as is. 按原样运行时出现错误。 I wasn't expecting it to work with the current code I have, but I'm not sure where to go from here. 我没想到它可以与当前的代码一起使用,但是我不确定从这里开始。 Any help would be greatly appreciated! 任何帮助将不胜感激!

My code: 我的代码:

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"
    };

} }

my runtime error: 我的运行时错误:

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)

You should try calling setListAdapter() in the onActivityCreated() method. 您应该尝试在onActivityCreated()方法中调用setListAdapter() This is because the Activity hasn't been completely created by the onCreate() method of a Fragment since the lifecycles of each are slightly different. 这是因为Activity尚未完全由Fragment的onCreate()方法创建,因为每个生命周期都略有不同。

Here is a similar question: Android Fragment onCreateView vs. onActivityCreated 这是一个类似的问题: Android片段onCreateView与onActivityCreated

A couple of problems in your fragment: 您的片段中有几个问题:

  1. If you are using ListFragment, then in your XML layout, you must have a ListView that has id of 'android.R.id.list'. 如果您使用的是ListFragment,则在XML布局中,必须具有ID为“ android.R.id.list”的ListView。
  2. Call your setListAdapter() method in onViewCreated() instead of onCreate(). 在onViewCreated()而不是onCreate()中调用setListAdapter()方法。 This is because onCreate() is called first before onCreateView(). 这是因为在onCreateView()之前先调用onCreate()。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM