Fragment 的动态加载

Posted 奋斗吧,少年!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment 的动态加载相关的知识,希望对你有一定的参考价值。

  Activity一定要继承FragmentActivity;同样是使用android-support-v4.jar包;      

  对fragment实例化:  MyFragment1  f1 = new MyFragment1();

  取得Manager:       FragmentManager manager = getSupportFragmentManager();

  只要对fragment操作,就必须开启事务:     FragmentTransaction transaction = manager.beginTransaction();

  添加提交: transaction.add(R.id.ll_main_container,f1).commit();     //R.id.ll_main_container 为布局文件中的容器

  将当前操作加入回退栈,这样点击back回到上一个界面:   transaction.addToBackStack(null);

  替换并提交: transaction.replace(R.id.ll_main_container,f2).commit();

  移除并提交:transaction.remove(f2).commit();

  

     主布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="showFragment2"
            android:text="显示Fragment2" />
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="deleteFragment2"
            android:text="移除Fragment2" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/layout_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" />
</LinearLayout>

  主Activity:

package com.example.fragementdemo;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends FragmentActivity {
	
	//1:创建Fragment对象
	//2:添加Fragment对象
	
	private MyFragment1 fragment1;
	private MyFragment2 fragment2 ;
	private FragmentManager manager;
	private FragmentTransaction transaction;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//首先显示fragment1
		fragment1 = new MyFragment1();			//实例化
		fragment2 = new MyFragment2();			
		
		manager = getSupportFragmentManager();  
		transaction = manager.beginTransaction();			//开启事务
		transaction.add(R.id.layout_container, fragment1);	//添加
		transaction.commit();								//提交
	}
	/**
	 * 显示Fragment2
	 * @param view
	 */
	public void showFragment2(View view ){
		transaction = manager.beginTransaction();
		//将当前操作加入回退栈,这样点击back回到上一个界面
		transaction.addToBackStack(null);		
		
		transaction.replace(R.id.layout_container, fragment2);		//替换显示并提交
		transaction.commit();
	}
	/**
	 *移除Fragment2
	 * @param view
	 */
	public void deleteFragment2(View view){
		transaction = manager.beginTransaction();
		transaction.remove(fragment2).commit();			//移除并提交
	}
	
}

  

  

  

以上是关于Fragment 的动态加载的主要内容,如果未能解决你的问题,请参考以下文章

重新加载时刷新片段

Cg入门19:Fragment shader - 片段级模型动态变色

在导航抽屉关闭之前加载片段

在单个活动中动态实现多个片段

如何在android中将json数据加载到片段中

Android ViewPager + 带有动态 ListViews 的片段