2012-06-24 38 views
0

爲什麼我不能在最後一行使用setContentView(R.layout.main)而沒有setContentView(tv)?請向我解釋這一點。關於android應用程序「HelloWorld」

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

沒有得到?您可以在此代碼的最後一個函數中設置setContentView(R.layout.main).............是什麼問題? –

回答

2

您必須在R.layout.main(一個xml文件)中定義textview,該文件包含活動中對象的信息。 如果您使用的是Eclipse,您可以簡單地拖放文本視圖,只需打開主文件即可。 (文件夾資源 - >佈局 - > 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"); 

那麼,我希望我幫了忙。是我的第一個迴應

2

您不應該在onCreate中撥打setContentView()兩次。請致電setContentView(R.layout.main)或致電setContentView(tv),但不能同時使用兩者。我更喜歡兩個中的第一個......但是您需要確保TextView在您的佈局XML中聲明。

0

讓我們先嚐試瞭解setContentView()方法的作用。基本上setContentView()將您的用戶界面置於您的Activity上。現在爲您的活動創建一個UI組件,您可以使用xml資源(例如R.layout.main),也可以在您的代碼中獲取UI組件的實例並將其動態添加到您的活動中。例如

TextView tv = new TextView(this); 

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

setContentView(tv); 

在你的情況,你所創建的TextViewtv的一個實例,設置一些文本,並補充說,你的活動。在這裏你不需要使用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而不是「您好,Android我是suvankar」,因爲最終您替換了您的UI資源。但是,如果您忘記添加xml資源並調用'setContentView(R.layout.main)',那麼編譯器將發出錯誤消息以找不到指定的xml資源。