2013-05-22 66 views
4

我試圖部署一個小型的Android應用程序,其中,我試圖向用戶顯示「Hello World」。'this'和'setContentView'是什麼意思?

的我申請在這裏行代碼是(從互聯網上的資源位):

TextView text = new TextView(this); 
    text.setText("Hello World, Here"); 
    setContentView(text); 

什麼我不明白的是:爲什麼this關鍵字這裏需要?我不能只是創建一個普通的TextView對象設置這樣的文字:

TextView text = new TextView(); 
    text.setText("Hello World, Here"); 

而且,什麼是這裏的setContentView方法的目的是什麼?它是否像Java的System.out.println一樣工作?有點困惑,任何幫助將不勝感激。謝謝 。

回答

3
TextView text = new TextView(this); 

這是指您的案例中的當前上下文因爲您希望在您的活動中使用文本視圖。

公共無效的setContentView(查看視圖)

設置活動內容,以明確的看法。該視圖直接放置在活動的視圖層次結構中。它本身可能是一個複雜的視圖層次結構。調用此方法時,指定視圖的佈局參數將被忽略。視圖的寬度和高度都默認設置爲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。

What's meant by the "this" context?

+0

所以'this'當前上下文的一個,這取決於我的應用程序將顯示的東西給用戶? –

+0

否您的案例中的視圖textview將在屏幕上顯示數據。 textview是在你的活動中初始化的,因此你使用這個。然後setContentView(文本)將設置視圖的內容,即文本到您的屏幕 – Raghunandan

+0

@ TheDarkKnight請檢查答案中的最後一個鏈接,以獲得更多的清晰度 – Raghunandan

0

這是指上下文。的setContentView用於設置需要一個整數作爲參數佈局資源和整數指的是佈局的xml

0

documentation

視圖元素需要上下文要傳遞給構造函數,以便它可以訪問資源喜歡的主題和東西。活動是上下文的一個孩子,所以你可以在這裏使用這個。

setContentView設置要用於顯示活動的視圖元素,您可以傳遞View元素或資源ID的實例。

0

如果它不存在(setContentView()方法),那麼當您的活動開始時,您將無法知道將執行哪個文件/代碼。

您正在設置setContentView()方法的上下文。

5
TextView text = new TextView(this); 

爲什麼這個關鍵字這裏需要?

這是指當前對象,在你的情況下是活動,因爲你可能從你的activity類的onCreate執行這段代碼。 而TextView類的構造函數至少需要一個上下文作爲參數。 而活動是上下文的一個子類,所以通過「這個」就行了。 這就是爲什麼你不能這樣做。

TextView text = new TextView(); 

現在回答我們爲什麼要這樣做。用這種方式來思考。 這是一種需要將自身附加到某個上下文的視圖。這樣它也可以在系統中消耗許多與上下文相關的權限。

將上下文看作是應用程序中單獨存在的已包裝組件,它將綁定其中的許多內容並具有正確定義的生命週期。

活動是一種上下文。活動是Android應用程序中的一個可見屏幕。 其實活動遠不止於此。但只是爲了在小學階段瞭解這一點。

setContentView說明了它本身。 活動將在其所屬的可見屏幕中顯示的內容。

因此,您聲明瞭一個TextView並將其設置爲要顯示的活動的內容。 簡單。

希望它有助於更​​好地理解它。 你應該更好地遵循 http://developer.android.com

歡呼

+0

非常感謝,真棒,投票。 –