我正在学习一个android开发课程,并且讲师创建了一个名为activity_youtube.xml的布局文件,并将ID命名为activity_youtube,然后在.java文件中为其编写了代码。
setContentView(R.layout.activity_youtube)
ConstraintLayout constraintLayout = findViewById(R.id.activity_youtube)
我真的对这个命名约定感到困惑。
调用R.layout.activity_youtube
时指的是什么,调用R.id.activity_youtube
时指的是什么
答案 0 :(得分:1)
调用 R.layout.activity_youtube 时,是指布局xml文件,因此要引用其中的所有内容。 当调用 R.id.activity_youtube 时,您所指的是文件中具有 id 属性的特定组件(布局,按钮,textView ...)分配给该名称。 我承认,调用布局可能有点误导。 xml文件及其布局组件相同。
答案 1 :(得分:1)
R
是Android中的公共最终类,它扩展了Object类。它纯粹是一种机制,可让您从代码中轻松引用资源层次结构的内容。因此,您无法创建子层次结构。
R.id
是在Android程序中创建的嵌套类文件,该文件也是自动生成的文件。 用于引用UI组件。让我们假设您的UI(R.laoyout.your_layout_name)中有两个按钮,您可以区分它们,并通过使用R.id.button1
和R.id.button2
来确定单击每个按钮时要执行的操作。这些按钮位于您在活动中使用R.layout
使用的布局文件中。
setContentView()
设置要显示为主要内容视图的视图。该方法已重载,因此您可以传递View类的对象(或它的子类,例如LinearLayout,TextView等),也可以使用 R.layout.your_layoutname.xml
< / strong>。
因此, R.layout.
引用您创建的任何布局资源,通常在/res/layout
中。因此,如果您创建了一个名为activity_main.xml
的活动布局,则可以使用R.layout.activity_main
中的引用来访问它。