android - 'this' 和 'setContentView' 在这里是什么意思?

标签 android

我试图部署一个小型 Android 应用程序,其中,我试图向用户显示“Hello World”。

我在这里应用的代码行是(有点来自互联网资源):

    TextView text = new TextView(this);
    text.setText("Hello World, Here");
    setContentView(text);

我不明白的是:为什么这里需要 this 关键字?我不能只创建一个普通的 Vanilla TextView 对象来设置这样的文本:

    TextView text = new TextView();
    text.setText("Hello World, Here");

还有,setContentView 方法的目的是什么?它是否像 java 的 System.out.println 一样工作?有点困惑,任何帮助将不胜感激。谢谢。

最佳答案

 TextView text = new TextView(this);

Why is this key word is required here ?

这是指当前对象,在您的情况下是 Activity,因为您可能正在从 Activity 类的 onCreate 执行此代码。 并且 TextView 类的构造函数至少需要一个上下文作为参数。 Activity 是 Context 的子类,因此传递“this”就可以了。 这就是为什么你不能做这样的事情。

 TextView text = new TextView(); 

现在回答我们为什么要这样做。这样想。 这是一个需要将自身附加到某些上下文的 View 。这样它也可以消费 系统中的许多上下文相关权限。

将上下文视为应用程序中独立存在的包装组件,它将绑定(bind)其中的许多内容并具有正确定义的生命周期。

Activity 是一种上下文。 Activity 是 android 应用程序中的一个可见屏幕。 实际上 Activity 远不止于此。但只是为了在初级水平上理解这一点。

setContentView 说明了一切。 Activity 将在其所属的可见屏幕中显示的内容。

因此,您声明了一个 TextView 并将其设置为要显示的 Activity 的内容。 简单。

希望它有助于更​​好地理解它。 你最好跟着 http://developer.android.com

干杯

关于android - 'this' 和 'setContentView' 在这里是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16690467/

相关文章:

android - 如何通过 Firebase 中的存储引用获取文件大小

java - android开发架构(android vs java web app)

安卓开发工具包。 MediaPlayer 可以访问文件作为 MediaRecorder 记录吗

java - 如何在不在 android 中的 Activity 上添加 map fragment 的情况下获取我的位置?

java - 如何从android中的java获得对 "root-only"文件夹的root访问权限

android - 制作 Androidplot 图表以显示图表上每个关键点的值

android - 操作栏下方的图像和不同的屏幕尺寸

android - 具有相同 ID 的两个 View

android - 具有任意数量行类型的 ListView 适配器(不知道不同行类型的数量)

android - 如何检查android中用户是否清除了缓存?