`
百合不是茶
  • 浏览: 344520 次
社区版块
存档分类
最新评论

Fragment的简单使用和动态添加

阅读更多

 

 一;  简单Fragment的使用;

    效果图;

  



 
 代码实现:

  

1), 创建fragment1.xml布局

   

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"   
    android:background="#00FF00">
    
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is fragment #1"
        android:textSize="25sp"
        />
</LinearLayout>

 

2,创建fragment2.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:orientation="vertical" 
    android:background="#FF0000"
    >
    
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is fragment #2"
        android:textSize="25sp"
        />
</LinearLayout>

 

3,创建main.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:orientation="vertical" >
    
   <fragment 
     android:name="com.example.frament.Frament1"  类名的完整地址
     android:id="@+id/frament1"
     android:layout_weight="1"
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent"
     />
   
  
   <fragment 
       android:name="com.example.frament.Frament2" 类名的完整地址
       android:id="@+id/fragment2"
       android:layout_weight="1"
       android:layout_height="fill_parent"
       android:layout_width="fill_parent"
       />

</LinearLayout>

 

4,在com.example.frament包下创建Fragment1

package com.example.frament;

import android.annotation.SuppressLint;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@SuppressLint("NewApi")
public class Frament1 extends Fragment {

	@SuppressLint("NewApi")
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		return inflater.inflate(R.layout.frament1, container,false);
	}
}

 

 

5,在com.example.frament包下创建Fragment2

package com.example.frament;

import android.annotation.SuppressLint;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

@SuppressLint("NewApi")
public class Frament2 extends Fragment {

	@SuppressLint("NewApi")
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		return inflater.inflate(R.layout.frament2, container,false);
	}
}

 

6,创建Activity的类MainActivity1(启动类) 

  

public class MainActivity1 extends Activity {

	@SuppressLint("NewApi")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

 

 

分析:

使用fragment来添加碎片需要使用一个类继承Fragment

 

public class Frament2 extends Fragment {

在ui中绘制,需要重写onCreateView()方法,该方法返回一个View对象,如下所示;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		return inflater.inflate(R.layout.frament2, container,false);
	}
使用LayoutInflater 制定布局文件,container参数引用父类 即准备碎片活动 ,savedInstanceState 碎片可以还原到前一次的状态

 

 

 二;Fragment的动态添加

前五步的代码与上面一样

 

6,创建Activity的类MainActivity1(启动类) 

 

package com.example.frament;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Display;

public class MainActivity1 extends Activity {

	@SuppressLint("NewApi")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.main);
		
		//向活动添加碎片,根据屏幕的纵向和横向显示
		//1,获取碎片管理器
		FragmentManager fragment=getFragmentManager();
		//2,碎片的显示需要使用FragmentTransaction类操作
		FragmentTransaction transacction=fragment.beginTransaction();
		//获取屏幕管理器和默认的显示
		Display display=getWindowManager().getDefaultDisplay();
		//判断横屏
		if(display.getWidth()>display.getHeight()){
			//获取java类
			Frament1 frament1 =  new Frament1();
			transacction.replace(android.R.id.content, frament1);
		}else{
			Frament2 frament2 =  new Frament2();
			transacction.replace(android.R.id.content, frament2);
		}
		//使用FragmentTransaction必须要commit
		transacction.commit();
	}

}

 

分析:

    向活动添加Fragment需要使用FragmentManager类,

      FragmentManager fragment=getFragmentManager();

 

   操作fragment需要使用FragmentTransaction进行碎片的添加,删除等操作 

FragmentTransaction transacction=fragment.beginTransaction();

 

   获取手机的屏幕

Display display=getWindowManager().getDefaultDisplay();

 

  当前页面替换成 frament1

   transacction.replace(android.R.id.content, frament1);

 

 

 

横屏时;

 

  • 大小: 19.6 KB
  • 大小: 22.5 KB
  • 大小: 15.1 KB
  • 大小: 18.7 KB
0
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics