android 動態創建Fragment

前一遍文章我們講瞭靜態創建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



發佈留言

發佈留言必須填寫的電子郵件地址不會公開。