我正在尝试部署一个小型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
一样工作?有点困惑,任何帮助将不胜感激。谢谢。
答案 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。
答案 2 :(得分:0)
这指的是上下文。 setContentview用于设置布局资源,它以整数作为参数,整数引用布局xml
答案 3 :(得分:0)
视图元素要求将Context传递给构造函数,以便它可以访问像主题和东西这样的资源。 Activity是Context的子级,所以你可以在这里使用它。
setContentView设置用于显示活动的视图元素,您可以传递View元素或资源ID的实例。
答案 4 :(得分:0)
如果它不存在(setContentView()方法),你就不会知道活动开始时将执行哪些文件/代码。
您正在使用setContentView()
方法设置上下文。