1

フラグメント内に単純なリストビューを配置しようとしています。そのまま実行するとエラーになります。私が持っている現在のコードで動作するとは思っていませんでしたが、ここからどこへ行くべきかわかりません。どんな助けでも大歓迎です!

私のコード:

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)
4

2 に答える 2

7

setListAdapter()メソッドを呼び出してみてくださいonActivityCreated()。これは、onCreate()それぞれのライフサイクルがわずかに異なるため、アクティビティがフラグメントの方法で完全に作成されていないためです。

同様の質問があります:AndroidフラグメントonCreateViewとonActivityCreated

于 2012-07-19T15:51:52.510 に答える
5

フラグメントのいくつかの問題:

  1. ListFragment を使用している場合、XML レイアウトには、「android.R.id.list」の ID を持つ ListView が必要です。
  2. onCreate() の代わりに onViewCreated() で setListAdapter() メソッドを呼び出します。これは、onCreateView() の前に onCreate() が最初に呼び出されるためです。
于 2012-07-19T15:52:06.967 に答える