Fragment动态加载

/*Fragment 动态加载*/ MyFragment2 myFragment2=new MyFragment2();/*创建实例*/ FragmentManager fragmentManager = getFragmentManager();/*获取到FragmentManager*/ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();/*开启事务*/ fragmentTransaction.add(R.id.frame,myFragment2); fragmentTransaction.addToBackStack(null);/*通过物理返回键返回*/ fragmentTransaction.commit();/*提交事务*/

主方法

package fragmentdemo.example.administrator.fragmentdemo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
/*1)Fragment可以作为Activity界面的一部分组成出现;
        (2)可以在一个Activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用;
        (3)在Activity运行过程中,可以添加、移除或替换Fragment;
        (4)Fragment可以响应自己的输入事件,并且有自己的声明周期,它们的生命周期受宿主Activity的生命周期影响;
        (5)Fragment在第一次绘制它的用户界面时,系统会调用onCreateView()方法,此方法返回一个View。(如果不显示UI,返回null);
        Fragment两种加载方式:静态加载、动态加载。*/

public class MainActivity extends Activity implements OnCheckedChangeListener
{

    private RadioGroup group;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        group = (RadioGroup) findViewById(R.id.radiogroup);
        group.setOnCheckedChangeListener(this);

    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // TODO Auto-generated method stub

        switch (checkedId) {
            case R.id.first: {
                Intent intent=new Intent(this,MainActivity2.class);
                startActivity(intent);
                break;

            }
            case R.id.second: {
               /*Fragment 动态加载*/
                MyFragment2 myFragment2=new MyFragment2();/*创建实例*/
                FragmentManager fragmentManager = getFragmentManager();/*获取到FragmentManager*/
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();/*开启事务*/
                fragmentTransaction.add(R.id.frame,myFragment2);
                fragmentTransaction.addToBackStack(null);/*通过物理返回键返回*/
                fragmentTransaction.commit();/*提交事务*/

                break;
            }
            case R.id.thrid: {
                Intent intent=new Intent(this,MainActivity3.class);
                startActivity(intent);
                break;

            }
            case R.id.fourth: {
                Intent intent=new Intent(this,MainActivity4.class);
                startActivity(intent);
                break;

            }
        }
    }
}

加载的main.xml布局,指定linerlayout的id

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5
 6     <LinearLayout
 7         android:id="@+id/frame"
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:orientation="vertical" >
11     </LinearLayout>
12
13
14
15     <RadioGroup
16         android:id="@+id/radiogroup"
17         android:layout_width="match_parent"
18         android:layout_height="wrap_content"
19         android:layout_alignParentBottom="true"
20         android:gravity="center_horizontal"
21         android:orientation="horizontal" >
22
23         <RadioButton
24             android:id="@+id/first"
25             android:layout_width="0dp"
26             android:layout_height="wrap_content"
27             android:layout_weight="1"
28             android:background="@drawable/radio_pressed"
29             android:button="@null"
30             android:drawableTop="@mipmap/ic_launcher"
31             android:gravity="center_horizontal"
32             android:text="静态加载" />
33
34         <RadioButton
35             android:id="@+id/second"
36             android:layout_width="0dp"
37             android:layout_height="wrap_content"
38             android:layout_weight="1"
39             android:background="@drawable/radio_pressed"
40             android:button="@null"
41             android:drawableTop="@mipmap/ic_launcher"
42             android:gravity="center_horizontal"
43             android:text="动态加载" />
44
45         <RadioButton
46             android:id="@+id/thrid"
47             android:layout_width="0dp"
48             android:layout_height="wrap_content"
49             android:layout_weight="1"
50             android:background="@drawable/radio_pressed"
51             android:button="@null"
52             android:drawableTop="@mipmap/ic_launcher"
53             android:gravity="center_horizontal"
54             android:text="生命周期" />
55
56         <RadioButton
57             android:id="@+id/fourth"
58             android:layout_width="0dp"
59             android:layout_height="wrap_content"
60             android:layout_weight="1"
61             android:background="@drawable/radio_pressed"
62             android:button="@null"
63             android:drawableTop="@mipmap/ic_launcher"
64             android:gravity="center_horizontal"
65             android:text="传值通信" />
66     </RadioGroup>
67
68 </RelativeLayout>

MyFragment2继承自Fragment

 1 package fragmentdemo.example.administrator.fragmentdemo;
 2
 3 import android.app.Fragment;
 4 import android.os.Bundle;
 5 import android.support.annotation.Nullable;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.TextView;
10
11 /**
12  * Created by Administrator on 2016/5/6.
13  */
14 public class MyFragment2 extends Fragment{
15     @Nullable
16     @Override
17     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
18         /*resource:Fragment需要加载的布局文件
19         root:加载layout中父ViewGroup
20         attachToRoot:false,不返回父ViewGroup*/
21         View view=inflater.inflate(R.layout.fragment,container,false);
22         TextView textView= (TextView) view.findViewById(R.id.text);
23         textView.setText("动态加载");
24         return view;
25
26     }
27 }

fragment.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">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text"

    />
    <Button
        android:text="改变"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button"/>

</LinearLayout>
时间: 2024-10-03 23:59:10

Fragment动态加载的相关文章

实现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

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

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

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生命周期的管理,而本文将会分析这两个复杂问题的解决方法.需要说明的一点是,我们不可能调起任何一个未安装的

Android 插件开发,做成动态加载

为什么需要插件开发: 相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 可能有些同学会说,解决这个问题很简单,我们只需要在Project.proterty中配置一句话就Ok啦, dex.force.jumbo=true 是的,加入了这句话,确实可