? ? ? ?今天,南昌網絡公司-百恒網絡給大家介紹一下實現fragment生命周期的方法,供大家參考、學習,希望對大家有所幫助。
? ? ? ?CrimeFragment類是與模型及視圖對象交互的控制器,用于顯示特定crime的明細信息,并在用戶修改這些信息后立即進行更新。
? ? ? ?在GeoQuiz應用中,activity通過其生命周期方法完成了大部分邏輯控制工作。而在CriminalIntent應用中,這些工作是由fragment的生命周期方法完成的。fragment的許多生命周期方法對應著我們熟知的Activity方法,如onCreate(Bundle)方法。
? ? ? ?在CrimeFragment.java中,新增一個Crime實例成員變量,實現Fragment.onCreate(Bundle)方法,如下代碼清單所示。
? ? ? ?覆蓋Fragment.onCreate(Bundle)方法(CrimeFragment.java)
? ? ? ?public class CrimeFragment extends Fragment {
? ? ? ?private Crime mCrime;
? ? ? ?@Override
? ? ? ?public void onCreate(Bundle savedInstanceState) {
? ? ? ?super.onCreate(savedInstanceState);
? ? ? ?mCrime = new Crime();
? ? ? ?}
? ? ? ?}
? ? ? ?需注意以上實現代碼中的以下幾點:
? ? ? ?首先,Fragment.onCreate(Bundle)是公共方法,而Activity.onCreate(Bundle)是保護方法。Fragment.onCreate(...)方法及其他Fragment生命周期方法必須是公共方法,因為托管fragment的activity要調用它們。
? ? ? ?其次,類似于activity,fragment同樣具有保存及獲取狀態的bundle。如同使用Activity.onSaveInstanceState(Bundle)方法那樣,我們也可以根據需要覆蓋Fragment.onSave-InstanceState(Bundle)方法。
? ? ? ?另外, fragment的視圖并沒有在Fragment.onCreate(...)方法中生成。雖然我們在Fragment.onCreate(...)方法中配置了fragment實例,但創建和配置fragment視圖是另一個fragment生命周期方法完成的:
? ? ? ?public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
? ? ? ?該方法實例化fragment 視圖的布局, 然后將實例化的View 返回給托管activity 。
? ? ? ?LayoutInflater及ViewGroup是實例化布局的必要參數。Bundle用來存儲恢復數據,可供該方法從保存狀態下重建視圖。
? ? ? ?在CrimeFragment.java中,添加onCreateView(...)方法的實現代碼,從fragment_crime.xml布局中實例化并返回視圖,如下代碼所示。
? ? ? ?覆蓋onCreateView(...)方法(CrimeFragment.java)
? ? ? ?public class CrimeFragment extends Fragment {
? ? ? ?private Crime mCrime;
? ? ? ?@Override
? ? ? ?public void onCreate(Bundle savedInstanceState) {
? ? ? ?super.onCreate(savedInstanceState);
? ? ? ?mCrime = new Crime();
? ? ? ?}
? ? ? ?@Override
? ? ? ?public View onCreateView(LayoutInflater inflater, ViewGroup container,
? ? ? ?Bundle savedInstanceState) {
? ? ? ?View v = inflater.inflate(R.layout.fragment_crime, container, false);
? ? ? ?return v;
? ? ? ?}
? ? ? ?}
? ? ? ?在onCreateView(...) 方法中, fragment 的視圖是直接通過調用LayoutInflater.inflate(...)方法并傳入布局的資源ID生成的。第二個參數是視圖的父視圖,我們通常需要父視圖來正確配置組件。第三個參數告知布局生成器是否將生成的視圖添加給父視圖。這里,我們傳入了false參數,因為我們將以activity代碼的方式添加視圖。
? ? ? ?關于實現fragment生命周期的方法,百恒網絡今天就講到這里,了解更多關于南昌APP開發、網站建設、微信開發、電商購物網站開發、網絡營銷等方面的資訊,歡迎訪問百恒網絡網站,網址:http://zzzhenghong.cn/,或者來電咨詢百恒網絡,十多年資深建站經驗,值得信賴!