定义变量-MainActivity

时间:2019-05-03 17:33:39

标签: java android

我有此代码

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);
                ...
        }
}

我不清楚以下内容:

  1. 当我尝试在contactNames下分配MainActivity时为什么会出错?
  2. 为什么在setContentView之后查找视图如此重要,因为如果我之前(在onCreate下查找视图,我也会收到错误消息?

3 个答案:

答案 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}}来查看,它是问题第二部分的简单定义。