0

ListFragment の使用方法を学習していますが、次のコードを実行するとアプリケーションがクラッシュします。

public class profileListFragment extends ListFragment {

String[] countries = new String[] {"USA", "China"};

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

    getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(inflater.getContext(),
            android.R.layout.simple_list_item_1,countries);
    setListAdapter(adapter);
    View retView = super.onCreateView(inflater, container,  savedInstanceState);

    return retView;//super.onCreateView(inflater, container,  savedInstanceState);
}

public void onListItemClick(ListView I, View v, int position, long id){
    I.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    I.setSelector(android.R.color.holo_blue_light);
}
}

getListView() ステートメントが原因であることはわかっています。削除してもクラッシュしないためです...

どんな助けでも大歓迎です

I/ActivityManager(352): START {cmp=myapp.app/.loadProfile u=0} from pid 24295

E/AndroidRuntime(24295): java.lang.RuntimeException: Unable to start activity ComponentInfo{myapp.app/myapp.app.loadProfile}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment

E/AndroidRuntime(24295): at myapp.app.loadProfile.onCreate(loadProfile.java:12)

E/AndroidRuntime(24295): at myapp.app.profileListFragment.onCreateView(profileListFragment.java:19)

11-10 22:15:01.002: W/ActivityManager(352):   Force finishing activity myapp.app/.loadProfile
4

1 に答える 1

0

次のようなxmlを作成しました。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent" >

<ListView
    android:id="@id/android:list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:choiceMode="singleChoice" >

</ListView>

</LinearLayout>

次に、それを膨らませて、そのビューでandroid.R.id.listを探してfindViewByIdを実行し、最初に必要なListViewハンドラーを用意します。コードスニペットは次のとおりです。

    View retView = inflater.inflate(R.layout.fragment_load_profile_list_layout,container, false);
    ListView lv = (ListView) retView.findViewById(android.R.id.list);
    lv.setSelector(android.R.color.holo_blue_light);
    lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
于 2012-11-11T16:59:19.307 に答える