2 o19830015 o19830015 于 2012.12.12 10:55 提问

android对话框的根视图

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>

在Activity中给listView添加一个Adapter:

@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);

请高手指教。

3个回答

fandyvon
fandyvon   Rxr 2012.12.12 11:41
已采纳
Dialog d = new Dialog(this);
ListView lv = (ListView) View.inflate(getBaseContext(),R.layout.training_dialog,null);
d.setContentView(lv);
ListAdapter adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, createNamesList());
lv.setAdapter(adapter);
o19830015
o19830015 谢谢
大约 5 年之前 回复
cytown
cytown   2012.12.12 11:14

getCurrentFocus()会返回null

getCurrentFocus()会返回null

o19830015
o19830015 谢谢
大约 5 年之前 回复
franzhong
franzhong   2012.12.12 11:18
 public class MyListView extends Activity {     
        private ListView listView;
        //private List<String> data = new ArrayList<String>();
        @Override
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);

           listView = new ListView(this);
            listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
            setContentView(listView);
        }      

        private List<String> getData(){             
            List<String> data = new ArrayList<String>();
            data.add("测试数据1");
            data.add("测试数据2");
            data.add("测试数据3");
            data.add("测试数据4");             
            return data;
        }
    }

以上是基础调用方法,可以比较一下

o19830015
o19830015 谢谢
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!