我正在創建一個包含多個片段的選項卡列表。 我注意到,在主要活動中,我使用setContentView
來獲取佈局xml並使用findViewById
來獲取相應的UI元素配置。setContentView和LayoutInflater之間的差異
setContentView(R.layout.fragment_tabs);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabManager = new TabManager(this, mTabHost, android.R.id.tabcontent);
但是,在不同的片段類中,我必須改用inflater。
View v = inflater.inflate(R.layout.webview, container, false);
WebView myBrowser=(WebView)v.findViewById(R.id.mybrowser);
而且這兩個函數都用來獲取佈局xml來創建一個對象,爲什麼會有區別?第一個在onCreate
期間使用,第二個在onCreateView
期間使用?在什麼情況下我應該選擇他們中的任何一個?
感謝您的回答,是否有必要在findViewById之前獲取xml文件併爲其創建對象?因爲我在官方文檔中發現了一些例子。例如EditText editText =(EditText)findViewById(R.id.email_address); – user782104
我不確定我完全理解了這個問題,所以如果我的回答沒有意義,請隨時再次提問。活動和視圖都有一個名爲findViewById()的方法。活動版本將在其內容視圖內搜索具有給定id的視圖(因此,在內部它將調用contentView.findViewById())。這意味着contentView需要在可用之前進行設置。像「setContentView」一樣,片段沒有「findViewById」的方法(這是合理的,因爲沒有內容視圖)。只需使用getView()。findViewById()來代替相同的行爲。 –
您沒有提到可以在Activity中使用'LayoutInflater.inflate',作爲'setContentView'的替代方法。 –