2011-12-29 64 views
0

我有兩個擴展活動類的類。每個班級都有自己的佈局類,main.xmlcompose.xml從佈局xml文件創建的對象爲空

在我的主要活動中,我嘗試訪問compose.xml中的佈局元素。所以:

EditText smsBody = (EditText)findViewById(R.id.smsBody); 

但smsBody是null。爲什麼?我怎樣才能訪問它?

+0

你嘗試清理的項目? – 2011-12-29 18:58:33

+0

是的,我也是這麼做的 – 2011-12-29 19:19:58

+0

坦率地說,這也發生在我身上幾次。如果你google找到的ViewById返回null,你將得到很多帖子,大部分時間它使用清理工作,對我也是如此。你可以發佈XML和代碼here.I希望你在爲EditText做findViewById之前完成了setContentView()。 – 2011-12-29 19:34:30

回答

1

你設置在onCreate()方法的內容有何看法?

就像這個例子:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 
+0

是的,我設置了內容視圖 – 2011-12-29 19:19:26

+0

當您嘗試訪問'compose.xml'的子項時,您需要調整以下行:'setContentView(R.layout.compose);'。 – Stephan 2011-12-29 19:36:27

1

那麼,你的主要活動有一個main.xml佈局。您的撰寫活動有compose.xml佈局。假設您的「smsBody」EditText處於compose.xml佈局中,那麼這隻會在您的撰寫活動中可訪問,因爲該小部件在您的main.xml佈局中不存在。

1

當主要活動有佈局main.xml時,如何能夠期望您可以訪問compose.xml的組件?你應該使用setContentView()來設置視圖內部的佈局。

在我們需要使用其他的設計以及特殊情況下

,所以你可以使用LayoutInflater這個