[android] 02_动态创建fragment

Android 4.0

动态创建fragment 

需求:横屏:显示fragmenthorizontal 竖屏:显示fragmentvertical
android.R.id.content 代表当前Activity的id(固定写法)
1、布局 
a) /res/layout/fragment_horizontal.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这个是横屏fragment" />
</LinearLayout>
b) /res/layout/fragment_vertical.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这个是竖屏fragment" />
</LinearLayout>
c) /res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
</LinearLayout>
2、核心代码 
a) FragmentHorizontal.java
package cn.zengfansheng.dynamicfragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentHorizontal extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_vertical, null);
    }
}
b) FragmentVertical.java
package cn.zengfansheng.dynamicfragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentVertical extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_horizontal, null);
    }
}
c) MainActivity.java
package cn.zengfansheng.dynamicfragment;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Display;
import android.view.WindowManager;
public class MainActivity extends Activity {
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 需求:横屏:显示fragmenthorizontal 竖屏:显示fragmentvertical

        // 1、获取FragmentManager对象
        FragmentManager fragmentManager = this.getFragmentManager();

        // 2、开启事务
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        // 3、获取手机的屏幕尺寸
        WindowManager windowManager = this.getWindowManager();
        Display defaultDisplay = windowManager.getDefaultDisplay();
        int windowWidth = defaultDisplay.getWidth();
        int windowHeight = defaultDisplay.getHeight();
        
        // 4、判断横竖屏幕
        if (windowWidth>windowHeight) {//横屏
            //显示fragmenthorizontal
            fragmentTransaction.replace(android.R.id.contentnew FragmentHorizontal());
        }else {//竖屏
            //显示fragmentvertical
            fragmentTransaction.replace(android.R.id.contentnew FragmentVertical(), null);
        }
        
        // 5、提交事务
        fragmentTransaction.commit();
    }
}
3、结果