这是一个非常简单的例子,我在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

08-05 11:56