2011-03-09 74 views
1
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.widget.Toast; 

public class ViewId extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     TextView txtArea = new TextView(this); 
     txtArea.setId(20); 
     txtArea.setText("Hello"); 

     TextView view = new TextView(this); 
     view = (TextView) this.findViewById(20); 
     Toast.makeText(this,view.getText(), Toast.LENGTH_LONG).show(); 
    } 
} 

當我在eclipse中調試上面的代碼時,視圖的值在變量窗口中顯示爲空。 有什麼問題?或者是否有任何其他方法setid的textview,並從該特定的id回收該文本視圖,而不使用XML文件。findviewbyid在android中不起作用

+3

我認爲你應該花一些時間在http://developer.android.com/resources/tutorials/hello-world.html – ingsaurabh 2011-03-09 11:27:59

回答

5

你的代碼有點混亂。首先你用一個你從不使用的xml佈局設置你的contentview。您還可以創建一個TextView txtArea並將該ID設置爲20,這沒問題,但是您絕不會將此視圖添加到您的內容中,所以當然可以稍後再找到它。

您必須決定:使用XML進行佈局並使用它。您也可以通過編程方式對其進行修改,或者以編程方式創建自己的佈局,並將內容視圖設置爲新創建的佈局/視圖。

+0

是的,你是絕對正確的,如果我不把textview放在內容中,那麼應用程序將如何找到。但還有一個問題。如果假設我已經將textview放在tablelayout-> tablerow-> textview中,那麼findViewbyid將起作用,或者我應該更改我的代碼? – Nirav 2011-03-09 11:47:02

+0

它應該工作,只要它在你的內容中......但你應該考慮這一點:當你動態創建它時,你也可以將實例保存在一個成員變量中,所以你不需要調用findViewById()來得到一個參考.... – WarrenFaith 2011-03-09 12:03:16

相關問題