2012-07-19 56 views
1

我想在我的片段裏放一個簡單的listview。當我按原樣運行時出現錯誤。我並不期望它能夠與我現有的代碼一起工作,但我不確定該從哪裏去。任何幫助將不勝感激!如何在Android中的片段內放置一個listview?

我的代碼:

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

}

我運行時錯誤:

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) 

回答

7

你應該嘗試在onActivityCreated()方法調用setListAdapter()。這是因爲活動並沒有完全由片段的onCreate()方法創建,因爲每個片段的生命週期稍有不同。

這裏有一個類似的問題:Android Fragment onCreateView vs. onActivityCreated

5

一對夫婦在你的碎片問題:

  1. 如果使用ListFragment,然後在你的XML佈局,你必須擁有一個具有的ID一個ListView 'android.R.id.list'。
  2. 在onViewCreated()而不是onCreate()中調用setListAdapter()方法。這是因爲onCreate()在onCreateView()之前被首先調用。
相關問題