做什么'这个'和' setContentView'这意味着什么

时间:2013-05-22 11:21:51

标签: 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一样工作?有点困惑,任何帮助将不胜感激。谢谢。

5 个答案:

答案 0 :(得分:5)

 TextView text = new TextView(this);
  

为什么这里需要这个关键词?

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

 TextView text = new TextView(); 

现在回答我们为什么要这样做。以这种方式思考。 这是一个需要将自己附加到某些上下文的视图。这样它也可以消耗 系统中许多与上下文相关的权限。

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

活动是一种上下文。 Activity是Android应用程序中的一个可见屏幕。 实际上活动远不止于此。但只是在小学阶段理解这一点。

setContentView就是这么说的。 活动将在其所属的可见屏幕中显示的内容。

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

希望有助于更好地理解它。 你应该更好地遵循 http://developer.android.com

欢呼声

答案 1 :(得分:3)

 TextView text = new TextView(this);

这指的是您的案例活动上下文中的当前上下文,因为您希望在活动中使用文本视图。

public void setContentView(View view)

将活动内容设置为显式视图。此视图直接放在活动的视图层次结构中。它本身可以是一个复杂的视图层次结构。调用此方法时,将忽略指定视图的布局参数。默认情况下,视图的宽度和高度都设置为MATCH_PARENT。要使用您自己的布局参数,请调用setContentView(android.view.View,android.view.ViewGroup.LayoutParams)。

参数

查看要显示的内容。

http://developer.android.com/reference/android/app/Activity.html#setContentView(android.view.View)

在你的情况下,setContentView(文本)你将视图即textview设置为活动即屏幕。

android中的

System.out.println(“hello”)将在logcat中打印hello。

What's meant by the "this" context?

答案 2 :(得分:0)

这指的是上下文。 setContentview用于设置布局资源,它以整数作为参数,整数引用布局xml

答案 3 :(得分:0)

来自documentation

视图元素要求将Context传递给构造函数,以便它可以访问像主题和东西这样的资源。 Activity是Context的子级,所以你可以在这里使用它。

setContentView设置用于显示活动的视图元素,您可以传递View元素或资源ID的实例。

答案 4 :(得分:0)

如果它不存在(setContentView()方法),你就不会知道活动开始时将执行哪些文件/代码。

您正在使用setContentView()方法设置上下文。