-4

为什么,这是不行的,它会产生错误。

super.onCreate(savedInstanceState);

btn = ( Button ) findViewById(R.id.button);
btn.setOnClickListener(this);

setContentView(R.layout.activity_according_to_book);

如果我将“ setContentView(R.layout.activity_according_to_book); ”放在“ super.onCreate(savedInstanceState); ”之后的第二行,它不会创建错误。

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_according_to_book);

btn = ( Button ) findViewById(R.id.button);
btn.setOnClickListener(this);
4

3 回答 3

0

当你打电话时

      findViewById(R.id.button);

在 R.layout.activity_according_to_book 上搜索 Button。

所以 setContentView(R.layout.activity_according_to_book);

必须在您寻找视图之前。

于 2013-03-01T10:46:20.820 回答
0

通过调用setContentView(),您为您的视图层次结构膨胀Activity,然后您Views通过调用获取对 的引用findViewById()。如果您没有调用setContentView()- 您在视图层次结构中没有任何Views内容,因此您无法引用它们。希望它足够清楚。

于 2013-03-01T10:44:12.143 回答
0

它会产生错误,因为应用程序在调用之后加载布局setContentView,因此findViewById在该方法之前将始终返回 null。

于 2013-03-01T10:44:25.917 回答