setContentView(R.layout.main)是什么意思?

53
我理解这与应用程序的布局有关,但我需要在什么情况下使用它呢? 我试图寻找一个解释这种方法的链接,但我找不到。 提前感谢您!

5
这是一个关于Android setContentView的清晰可见的解释。 - Athira Reddy
5个回答

67

在Android中,视觉设计存储在XML文件中,每个Activity都与一个设计相关联。

setContentView(R.layout.main)

R 表示资源。

layout 意味着设计。

main 是你在 res->layout->main.xml 下创建的 xml 文件。

每当你想要更改 Activity 的当前外观或从一个 Activity 切换到另一个 Activity 时,新的 Activity 必须有一个设计来展示。我们在 onCreate 中使用所需的设计作为参数调用 setContentView


4
它是做什么的?我们如何使用它?为什么我们被迫使用它? - Niklas Rosencrantz
如果您根本不调用setContentView会怎样? - George Shalvashvili
当使用 C 代码(即 NDK)构建 Android 应用程序时,是否存在与“setContentView”和“R.layout.main”等效的 C 语言? - mercury0114

13
根据文档:
从布局资源设置活动内容。将膨胀资源,添加所有顶层视图到活动中。
在清单文件中,您的 Launcher 活动首先被调用,并根据各自的Java文件指定 setContentView(R.layout.main); 设置布局视图。现在,此活动使用 setContentView(R.layout.main)将XML布局设置为该活动,它将实际呈现为活动的UI。

这份文档来自于接受View参数的setContentView()版本。 - Code-Apprentice
@Code-Apprentice 感谢您的纠正。我已经工作了16个小时,现在需要休息一下 :) - CodeWarrior

10

为什么在Android中使用setContentView()如此流行?

setContentView(int layoutid)是Activity类的一个方法,它可以在屏幕上展示布局。

R.layout.main是在R.java类文件的嵌套布局类中实现的整数值。

在运行时,设备将根据setcontentview()方法中给定的ID选择对应的布局。


3
您可以设置一个Activity的内容视图(或设计)。例如,您也可以像这样做:
public void onCreate(Bundle savedinstanceState) {
    super.onCreate(savedinstanceState);

    Button testButon = new Button(this);

    setContentView(testButon);   
}

同时观看这个教程。


3

从布局资源设置活动内容。将会被填充的资源膨胀,所有顶层视图都将添加到活动中。

  • Activity基本上是一个空窗口
  • SetContentView用于使用提供的UI来填充窗口,例如setContentView(R.layout.some_file)。
  • 这里布局文件会被膨胀为视图并添加到活动上下文(Window)中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接