为什么我不能在没有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);
}
}
答案 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资源。