0

为什么我不能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);
    }

}
4

3 回答 3

2

您必须在 R.layout.main(一个 xml 文件)中定义 textview,该文件包含活动中对象的信息。如果您使用的是 Eclipse,您可以简单地拖放一个文本视图,只需打开主文件。(文件夹 res -> 布局 -> 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");

好吧,我希望我有所帮助。这是我的第一个回应

于 2012-06-24T19:21:03.730 回答
2

你不应该setContentView()在你的onCreate. 要么打电话setContentView(R.layout.main)要么打电话,setContentView(tv)但不能两者兼而有之。我更喜欢两者中的第一个......但您需要确保TextView在您的布局 XML 中声明。

于 2012-06-24T19:25:30.093 回答
0

让我们首先尝试了解setContentView()方法的作用。基本上 setContentView()将你的 UI 放在你的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而不是“Hello, Android i am suvankar”,因为最后您替换了 UI 资源。但是,如果您忘记添加您的 xml 资源并调用 'setContentView(R.layout.main)',编译器会因为找不到指定的 xml 资源而发出错误。

于 2012-06-26T12:07:30.987 回答