关于android应用程序的“HelloWorld”程序

时间:2012-06-24 19:06:46

标签: android

为什么我不能在没有setContentView(R.layout.main)的最后一行使用setContentView(tv)?请向我解释一下。

package com.mue.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorldActivity extends Activity 

{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        TextView tv = new TextView(this);

        tv.setText("Hello, Android i am suvankar");

        setContentView(tv);
    }

}

3 个答案:

答案 0 :(得分:2)

您必须在R.layout.main(xml文件)中定义textview,此文件包含活动中对象的信息。 如果你正在使用eclipse,你可以简单地拖放textview,只需打开主文件。 (文件夹res - > layout - > main.xml)

然后你必须在你的程序中调用它:

setContentView(R.layout.main);
TextView tv = (TextView) findViewById(R.id.tv); //<-- yo have to use the same ID that is in the main.xml file

然后您可以设置文本。所有这些都在oncreate函数中。

tv.setText("Hello, Android i am suvankar");

好吧,我希望我能帮到你。这是我在这里的第一个回应

答案 1 :(得分:2)

您不应在setContentView()中两次致电onCreate。请致电setContentView(R.layout.main)或致电setContentView(tv),但不要同时致电TextView。我更喜欢这两个中的第一个......但是你需要确保在布局XML中声明{{1}}。

答案 2 :(得分:0)

让我们首先尝试了解setContentView()方法的作用。基本上setContentView()会将您的用户界面放在Activity上。现在,要为Activity创建UI组件,您可以使用xml资源(例如R.layout.main),也可以在代码中获取UI组件的实例,并将其动态添加到Activity中。例如

TextView tv = new TextView(this);

tv.setText("Hello, Android i am suvankar");

setContentView(tv);

在您的情况下,您创建了TextView tv的实例,为其设置了一些文本并将其添加到您的活动中。在这里,您不需要使用setContentView(R.layout.main)。但是,如果您的布局文件夹中有xml布局(main.xml),如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World"
    />
</LinearLayout>

在您的应用程序底部编写setContentView(R.layout.main),您应该看到一个黑色屏幕,上面写着 Hello World 。这是因为在这里你创建了一个TextView实例,为它设置了一些文本,但没有通过调用将它放到你的活动中 setContentView(tv),而是添加了完全不同的布局资源。如果您使用setContentView(tv)并在onCreate()的末尾添加setContentView(R.layout.main),那么您将再次看到 Hello World 而不是&#34; Hello,Android i am suvankar&#34;因为最后你更换了你的UI资源。但是,如果您忘记添加xml资源并调用&#39; setContentView(R.layout.main)&#39;编译器将发出错误,因为找不到指定的xml资源。