2014-06-07 19 views
0

當一個新的對象後,它會經常去:在創建新對象時,應該始終使用「this」作爲上下文嗎?

TextView textView = new TextView(this) 

在這裏,我們應該始終使用「this」指針(一個活動的一個實例,一般)爲TextView的背景下?對我來說,似乎任何上下文都可以在許多情況下工作,比如以下方法。

TextView textView = new TextView(this); 
     textView.setTextSize(textSize); 
     textView.setTextColor(textColor); 
     textView.setText(text); 
     tableRow.addView(textView); 

而我的斷言是,因爲我沒有采用任何資源,任何上下文都可以取代「this」。 (我認爲這是錯誤的。)爲什麼我們應該使用「this」而不是其他任何上下文?

+0

請添加正確的語言標記(我認爲它會是Java),並命名您正在使用的庫(提供'TextView'類的那個),理想情況下也是以標記的形式。這可以幫助你找到正確的人看你的問題。 – cmaster

+0

謝謝您的評論! – SHAHM

+2

它取決於上下文(原文如此)。有用的閱讀材料:http://www.doubleencore.com/2013/06/context/ – laalto

回答

2

在這裏,我們是否應該始終使用「this」指針(一個Activity的實例,通常)作爲TextView的上下文?

偶爾,有一個更好的選擇,但是這通常是在明顯的情況:

  • 您正在使用Presentation路由東西到外部顯示器,因此您使用的是Display相關的Context

  • 你正在編寫一個InputMethodService,需要返回ViewonCreateInputView()

  • 你正在編寫一個DreamService,並需要調用setContentView(),並選擇創建在Java代碼中的小部件,而不是使用佈局

  • 等等

我不會採取任何資源

您的密碼不是。您的應用程序是以訪問您的活動(或應用程序)的樣式/主題資源的框架類的形式。

laalto的評論blog post by Dave Smith是一個很好的起點,爲正確的情況選擇合適的Context

相關問題