我有兩個擴展活動類的類。每個班級都有自己的佈局類,main.xml
和compose.xml
。從佈局xml文件創建的對象爲空
在我的主要活動中,我嘗試訪問compose.xml
中的佈局元素。所以:
EditText smsBody = (EditText)findViewById(R.id.smsBody);
但smsBody是null
。爲什麼?我怎樣才能訪問它?
我有兩個擴展活動類的類。每個班級都有自己的佈局類,main.xml
和compose.xml
。從佈局xml文件創建的對象爲空
在我的主要活動中,我嘗試訪問compose.xml
中的佈局元素。所以:
EditText smsBody = (EditText)findViewById(R.id.smsBody);
但smsBody是null
。爲什麼?我怎樣才能訪問它?
你設置在onCreate()
方法的內容有何看法?
就像這個例子:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
是的,我設置了內容視圖 – 2011-12-29 19:19:26
當您嘗試訪問'compose.xml'的子項時,您需要調整以下行:'setContentView(R.layout.compose);'。 – Stephan 2011-12-29 19:36:27
那麼,你的主要活動有一個main.xml
佈局。您的撰寫活動有compose.xml
佈局。假設您的「smsBody」EditText
處於compose.xml
佈局中,那麼這隻會在您的撰寫活動中可訪問,因爲該小部件在您的main.xml
佈局中不存在。
當主要活動有佈局main.xml時,如何能夠期望您可以訪問compose.xml的組件?你應該使用setContentView()來設置視圖內部的佈局。
在我們需要使用其他的設計以及特殊情況下,所以你可以使用LayoutInflater
這個
你嘗試清理的項目? – 2011-12-29 18:58:33
是的,我也是這麼做的 – 2011-12-29 19:19:58
坦率地說,這也發生在我身上幾次。如果你google找到的ViewById返回null,你將得到很多帖子,大部分時間它使用清理工作,對我也是如此。你可以發佈XML和代碼here.I希望你在爲EditText做findViewById之前完成了setContentView()。 – 2011-12-29 19:34:30