setContentView的用法
setContentView(int layoutResID)eg , setContentView(R.layout.main) 這個事初學的時候通常在onCreate方法裏用到
setContentView(View view) //就是放一個view對象的參數
setContentView(View view, ViewGroup.LayoutParams params) //這種暫時還沒有試過
LayoutInflater用法
LayoutInflater inflater = getLayoutInflater()//調用activity的getLayoutInflater()方法獲得一個LayoutInflater
LayoutInflater localinflater = getSystemService(String nameater = getSystemService(String name) //也是調用activity中的getSystemService方法,所用的參數也是內置的,可根據需要選擇 eg , getSystemService(Context.Layout_INFLATER_SERVICE);LayoutInflater inflater = LayoutInflater.from(context); //eg , LayoutInflater.from(this);
注:這三種獲得LayoutInflater 的方式,本質其實是相同的,從源碼中能夠看出它們都是調用getSystemService()方法。
2、setContentView() 、LayoutInflater二者在Activity中使用的狀態:
初學Android的時候,大家都知道我們在emulater上運行我們的android應用時就會有一個界面顯示在模擬器上,而這裏面就是我們在繼承的Activity類中,重寫的一個onCreate方法裏使用了setContentView方法,把layout文件夾裏面的佈局文件(xml文件)設置進去,這樣,我們在模擬器上就可以看到我們自己定義的andriod ui.
這裏要詳細介紹一下LayoutInflater:我們用LayoutInflater一般都是想要把一個沒有被載入,或者想要動態載入的界面顯示出來,在一個繼承Activity基類的class中可以通過setContentView將界面顯示出來,但在非繼承於Activity的類中就需要LayoutInflater來Inflater了。所謂被載入和沒有被載入區別在於,比如,當我們啓動一個應用時,與入口Activity相關的layout就是被載入(啓動應用時第一個顯示在屏幕上的界面,通常就是main.xml);而其他的layout則是沒有被載入的,這時就要動態載入或通過跳轉到另一個activity.使用LayoutInflater可以得到項目中 layout文件夾下的某個xml佈局文件,然後將該文件轉化爲View類型,有需要時再用setContentView(view)顯示出來(一直不是很明白這樣再顯示出來有什麼意義???). LayoutInflater可以與findViewById相比,只不過findViewById得到的是xml佈局文件中某個具體的widget控件,如TextView/EditText/Button.....等一些界面元素
個人理解:如果我們的activity類不繼承Activity基類,則就要通過LayoutInflater來加載界面;而如果activity類繼承了Activity類,這時既可以用setContentView()來顯示界面,也可以用Inflater加載界面。