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();			//移除并提交
	}

}

  

  

 

时间: 2024-08-06 20:50:01

Fragment 的动态加载的相关文章

(ViewPager+Fragment)动态加载、删除页面,Fragmen中嵌套使用ViewPager

1.(ViewPager+Fragment)动态加载.删除页面 a.首先adapter要继承FragmentStatePagerAdapter. b.在PagerAdatpar重写getItemPosition(),return POSITION_NONE 即可每次刷新加载图面. 2.Fragmen中嵌套使用ViewPager 和activity中一样使用,将传入的getSupportFragmentManager替换成getChildFragmentManager即可.

实现Android 动态加载APK(Fragment or Activity实现)

尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38565345 最近由于项目太大了,导致编译通不过(Android对一个应用中的方法个数貌似有限制),所以一直琢磨着能否将某些模块的APK不用安装,动态加载,通过在网上查找资料和网友的帮助,终于实现了APK的动态加载,网络上介绍APK动态加载的文章非常多,但是我觉得写得非常好的就是这位大牛的,我基本上就是使用他的这种方案,然后加入了自己的元素.这位大牛是通过Activity实现的,我稍作修改

Android学习笔记之fragment的静态加载和动态加载

1.xml布局文件: main.xml 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" > 4 5 <LinearLayout 6 android:id="@+i

Fragment动态加载

/*Fragment 动态加载*/ MyFragment2 myFragment2=new MyFragment2();/*创建实例*/ FragmentManager fragmentManager = getFragmentManager();/*获取到FragmentManager*/ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();/*开启事务*/ fragmentTransacti

Android UI编程(8)——动态加载Fragment

通过动态加载fragment实现在一个Activity拥有3种不同的布局,直接看效果图吧: 常规模式下: 点击家居控制: 代码: AndroidManifest.xml--没有做任何修改,创建工程默认 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package

Android动态加载及hook资料汇总

Android  Java Hook http://www.52pojie.cn/thread-288128-2-1.html http://www.52pojie.cn/thread-426890-1-2.html apk加固 http://blog.csdn.net/jiangwei0910410003/article/details/48415225 Android自动打包程序 http://www.jizhuomi.com/android/environment/281.html 360

APK动态加载框架(DL)解析

意义 这里说说这个开源项目的意义.首先要说的是动态加载技术(或者说插件化)在技术驱动型的公司中扮演这相当重要的角色,当项目越来越庞大的时候,需要通过插件化来减轻应用的内存和cpu占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块. 我 几个月前开始进行这项技术的研究,当时查询了很多资料,没有找到很好的开源.目前淘宝.微信等都有成熟的动态加载框架,包括apkplug,但是它们都是 不开源的.还有github上有一个开源项目AndroidDynamicLoader,其思想是通过Fragme

Android插件化(二):使用DexClassLoader动态加载assets中的apk

Android插件化(二):使用DexClassLoader动态加载assets中的apk 简介 上一篇博客讲到,我们可以使用MultiDex.java加载离线的apk文件.需要注意的是,apk中的类是加载到当前的PathClassLoader当中的,如果apk文件过多,可能会出现ANR的情况.那么,我们能不能使用DexClassLoader加载apk呢?当然是可以的!首先看一下Doc文档. A class loader that loads classes from .jar and .apk

Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和activity生命周期的管理,而本文将会分析这两个复杂问题的解决方法.需要说明的一点是,我们不可能调起任何一个未安装的