1

我在 Android 中有一个对话框,作为我使用此文件的布局:

<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


</ListView>

在我需要向这个 ListView 添加一个适配器的活动中,我有这个:

@Override
protected Dialog onCreateDialog(int id) {
    switch(id){
    case ADDPLAYERDIALOG:{
        Dialog d = new Dialog(this);            
        d.setContentView(R.layout.training_dialog);
        ListView lv = (ListView) d.getCurrentFocus().getRootView(); 
        ListAdapter adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1, createNamesList());   
        lv.setAdapter(adapter);     

    return d;
    }
    }
    return super.onCreateDialog(id);
}

我在这里得到一个 NullPointerException:

 ListView lv = (ListView) d.getCurrentFocus().getRootView();

我没有这个 ListView 小部件的 id,因为它是一个布局 XML 文件,我不能只写lv = d.findViewById(R.id.listview);

我该如何解决这个问题?

4

1 回答 1

1

您可以通过 xml 轻松设置 id。你使用android:id标签。

您的 listview 节点应如下所示:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:id = "@+id/listview">
</ListView>

现在你lv = d.findViewById(R.id.listview);应该工作了。

于 2012-12-11T22:22:03.273 回答