1、fragment加载到Activity

(1)、添加fragment到Activity的布局文件

(2)、动态在activity中添加fragment

  例子:

 // 步骤1:获取FragmentManager
FragmentManager fragmentManager = getFragmentManager(); // 步骤2:获取FragmentTransaction
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 步骤3:创建需要添加的Fragment
final mFragment fragment = new mFragment(); // 步骤4:动态添加fragment
// 即将创建的fragment添加到Activity布局文件中定义的占位符中(FrameLayout)
// FragmentTransaction add = fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.add(R.id.fragment_container,fragment,"ssss");
fragmentTransaction.addToBackStack("ssss")
fragmentTransaction.commit();

2、FragmentPagerAdapter和FragmentStatePagerAdapter的区别

FragmentPagerAdapter适用于页面较少的情况,而FragmentStatePagerAdapter适用于页面较多的情况

因为在源码中FragmentStatePagerAdapter中的destroyItem中用了remove方法回收内存

而FragmentPagerAdapter中并不回收内存

3、fragment的生命周期

onArrach()当碎片和活动建立关联的时候调用

onCreateView()为碎片创建视图(加载布局)时调用

onActivityCreated()确保与碎片相关联的活动一定已经创建完毕的时候调用

onDestroyView()当与碎片关联的视图被移除的时候调用

onDetach()当碎片和活动解除关联的时候调用

fragment的通信

1、在fragment中调用Activity中的方法getActivity

2、在Activity中调用Fragment中的方法接口回调

3、在Fragment中的调用Fragment中的findFragmentById或findFragmentByTag中的方法

FragmentManager的replace、add、remove

replace:把Activity的fragment替换

add:加到最上层

remove:删除

例子:

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mFragment aFragment = mFragment.newInstance("woshilskdj"); FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().add(R.id.fragment_container,aFragment,"afragment").commit(); //在activity中加载Fragment
} }

mFragment.java

public class mFragment extends Fragment {

    private TextView title;
private Button enterB;
private Button changeText;
private bFragment bfragment; public static mFragment newInstance(String title){
mFragment fragment = new mFragment();
Bundle bundle = new Bundle();
bundle.putString("title",title);
fragment.setArguments(bundle);
return fragment;
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View contentView = inflater.inflate(R.layout.fragment, container, false);
// 设置布局文件
return contentView;
} @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
title = view.findViewById(R.id.fragment); enterB = view.findViewById(R.id.fragmentB);
changeText = view.findViewById(R.id.changeText); enterB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bfragment==null){
bfragment = new bFragment();
} Fragment fragment = getFragmentManager().findFragmentByTag("afragment"); //判断fragmentManager有没有已经标识好的“afragment”的实例
if(fragment!=null){
               //把fragment隐藏起来 再加载bfragment 这样返回的时候 不会再创建新的fragment
getFragmentManager().beginTransaction().hide(fragment).add(R.id.fragment_container,bfragment).addToBackStack(null).commit();
}else{
getFragmentManager().beginTransaction().replace(R.id.fragment_container,bfragment).addToBackStack(null).commit(); } }
}); changeText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
title.setText("我是苏");
}
}); Bundle bundle = getArguments();
if(bundle!=null){
title.setText(bundle.getString("title"));
} }

android fragment解析的更多相关文章

  1. Android Fragment 解析和使用

    Android Fragment的生命周期和Activity类似,实际可能会涉及到数据传递,onSaveInstanceState的状态保存,FragmentManager的管理和Transactio ...

  2. Android Fragment解析(下)

    今天被人问到了什么是Fragment,真是一头雾水,虽然以前也用到过,但不知道它是叫这个名字,狂补一下. 以下内容来自互联网,原文链接:http://blog.csdn.net/lmj62356579 ...

  3. Android Fragment解析(上)

    今天被人问到了什么是Fragment,真是一头雾水,虽然以前也用到过,但不知道它是叫这个名字,狂补一下. 以下内容来自互联网,原文链接:http://blog.csdn.net/lmj62356579 ...

  4. 【Android自学日记】【转】Android Fragment 真正的完全解析(下)

    上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API,如果你还不了解,请看:Android Fragment 真正的完全解析(上). 本篇将介绍上篇博客提到的:如何管理Frag ...

  5. Android Fragment 真正的完全解析(下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和 ...

  6. Android Fragment 真正的完全解析(下)---转

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和 ...

  7. Android Fragment 真正的完全解析(上)--转

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fra ...

  8. Android——Fragment 真正的完全解析(下)(转)

    原文地址:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种A ...

  9. Android—— Fragment 真正的完全解析(上)(转)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fra ...

随机推荐

  1. bzoj 4552 [Tjoi2016&Heoi2016]排序 (二分答案 线段树)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4552 题意: 给你一个1-n的全排列,m次操作,操作由两种:1.将[l,r]升序排序,2 ...

  2. day22 os模块

    # 主要用于和当前操作系统做对接的时候获取系统参数用的 import os # os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 # os.chdir("dir ...

  3. 【 Gym - 101138K 】 The World of Trains (DP)

    BUPT2017 wintertraining(15) #4E Gym - 101138K 题意 N节车厢的火车,每节车厢容量是1~K,那么有\(K^N\)种火车. 求选择D个连续的且容量相同的车厢的 ...

  4. Nginx反代至Tomcat基于memcached的session保持

    实现功能:基于前面tomcat基础简介与示例文章 (1) tomcat cluster将会话保存至memcached中:实现模型: 这里写图片描述 配置B,C主机安装openjdk与tomcat[本次 ...

  5. Leetcode 66.加一 By Python

    思路 如果单独操作最后一个元素,令其加一,满十进一,会挺麻烦的,要分情况. 所以我的思路是将list还原到字符串,再变成数值,直接+1,然后再还原到list.详见代码 代码 class Solutio ...

  6. SharePoint 2013 批量导入、删除帐号

    删除一个group里所有的帐号: cls ########################### # "Enter the site URL here" $SITEURL = &q ...

  7. bzoj1003/luogu1772 物流运输 (dijkstra+dp)

    先求出某一段时间[i,j]一直用同一个路径的最短路,乘上天数,记作cost[i,j] 那就可以设f[i]是前i天的最小代价,f[i]=f[j]+cost[j+1,i]+K #include<bi ...

  8. Eclipse 插件Maven在使用 add dependency,找不到包,解决办法

    通过右键单击pom.xml文件选择maven –> add dependency 或者是打开pom.xml文件,选择dependencies –>add 时,搜索不到依赖的jar包,解决方 ...

  9. 利用NEST2.0 在C#中操作Elasticsearch

    前言:本文主要演示了如何通过c#来操作elasticsearch,分两个方面来演示: 索引数据 搜索数据 Note: 注意我索引数据和搜索数据是两个不同的例子,没有前后依赖关系 准备工作:需要在vis ...

  10. 使用WinDbg下的gflags工具导致程序无法执行

    问题:the system cannot find file **.exe. 解决方法:开始-运行-输入regedit打开注册表编辑器,找到 HKEY_LOCAL_MACHINE/SOFTWARE/M ...