这是一个非常简单的例子,我在r.layout.main中定义了一个滚动视图。然后我尝试动态地向它添加一个textview。
不幸的是这次撞车了。
ScrollView scroll = (ScrollView) this.findViewById(R.id.scrollView1);
TextView tv1 = new TextView(this);
tv1.setText("This is tv1");
scroll.addView(tv1);
setContentView(R.layout.main);
现在我可以这样做了:
ScrollView scroll = new ScrollView(this);
TextView tv1 = new TextView(this);
tv1.setText("This is tv1");
scroll.addView(tv1);
setContentView(scroll);
但我真的希望能够用xml定义一些基本ui元素,然后动态添加其他元素。
最好的办法是什么?
最佳答案
这是因为你试图访问一个还没有被android解析的视图。
使用xml定义布局时,必须首先调用setContentView
,将布局文件引用传递给它,以便android可以解析该文件。只有这样,才能使用findViewById
访问元素。
这基本上意味着您应该在尝试访问布局的任何元素之前调用setContentView
。