我有此代码
public class MainActivity extends AppCompatActivity {
private ListView contactNames;
....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contactNames = findViewById(R.id.contact_names);
...
}
}
我不清楚以下内容:
contactNames
下分配MainActivity
时为什么会出错?setContentView
之后查找视图如此重要,因为如果我之前(在onCreate
下查找视图,我也会收到错误消息?答案 0 :(得分:0)
要在MainActivity下定义变量,您需要以下格式:
contactNames = (ListView) findViewById(R.id.contact_names);
这会将其强制转换为ListView类型。另外,请确认contact_names在mainactivity布局中。
答案 1 :(得分:0)
findViewById()是将xml中的小部件或控件链接到基于Java的对象的功能。因此,必须在此之前执行setContentView(),因为这会使视图膨胀,以便在xml中找到资源。
答案 2 :(得分:0)
您好,当您调用findViewById
时,它会从当前上下文中获取视图;当您调用set setContentView之后,它会将您的 XML 布局设置为活动内容,因此您可以调用{{ 1}}来查看,它是问题第二部分的简单定义。