前一遍文章我們講瞭靜態創建Fragment,這個在實際的開發中幾乎不用,都是動態創建的,所謂動態創建就是根據某個條件動態創建Fragment,
現在創建一個android項目 dynamicFragment
MainActivity.java
package com.example.dynamicfragment; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.WindowManager; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WindowManager wm = getWindowManager(); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight(); // 1.獲取fragment的管理器 FragmentManager fm = getFragmentManager(); // 2.管理裡面的fragment 開啟事務 保證界面更新 同時成功 或者 同時失敗 FragmentTransaction ft = fm.beginTransaction(); if (height > width) { // 豎屏 // android.R.id.content 代表的是當前的應用的activity ft.replace(android.R.id.content, new Fragment1()); } else { // 橫屏 // android.R.id.content 代表的是當前的應用的activity ft.replace(android.R.id.content, new Fragment2()); } ft.commit(); } }
Fragment1.java
package com.example.dynamicfragment; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment1, null); } }
Fragment2.java
package com.example.dynamicfragment; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment2, null); } }
xml文件就不貼上瞭,裡面就是一個TextView,所以沒啥可說的,當屏幕橫屏的時候顯示Fragment1,屏幕豎屏的時候顯示Fragment2