Android Fragment 学习
来源:互联网 发布:linux文件夹拷贝 编辑:程序博客网 时间:2024/04/28 09:56
!学习自菜鸟教程-移动端-Android
一、Fragment作用:当在一个activity里面,需要切换多个布局时,可用fragment,常用底部或顶部导航栏加fragment,实现类似微信主界面。
二、Fragment 生命周期 (图片来源已忘)
自定义Fragment,一般是继承Fragment,然后重写 onCreateView(),返回布局。
如下:
public class BaseFragment extends Fragment{ @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View contentView = inflater.inflate(R.layout.fragment_layout,container,false); return contentView; } }
三、Fragment 的管理 ( FragmentManager)
1、Fragment 以 activity 为容器,将创建的 fragment 添加到 activity 中
2、FragmentTransaction 的使用:
private void managerFragment(){ BaseFragment fragment = new BaseFragment(); FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(R.id.viewpager,fragment); //添加函数,将fragment添加到容器中 transaction.hide(fragment); //隐藏函数,此时没有销毁fragment,只是隐藏已经存在容器中的fragment transaction.show(fragment); //显示函数,将存在容器中的fragment 显示出来,hide 和 show 函数使fragment不走onResume函数 transaction.replace(R.id.viewpager,fragment); //替换函数,将当前的fragment 先remove,再创建新的fragment,然后 add 到容器中 transaction.commit(); //提交,上述的这些操作,都需要提交才可以完成 }
四、Fragment 与 Activity 的通信
1、创建Fragment时,传递参数,通过 setArgument(Bundle bundle) , Fragment 中获取参数 getArguments();
<span style="white-space:pre"></span>recordFragment = new RecordFragment(); Bundle bundle = new Bundle(); bundle.putString("text","这是 record Fragment"); bundle.putString("title","record"); recordFragment.setArguments(bundle);
2、Fragment 传数据给 Activity ,回调接口的方式:
public class BaseFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View contentView = inflater.inflate(R.layout.fragment_layout,container,false); return contentView; } public interface IResult{ void getResult(String result); //将需要返回的数据写在参数中 } public static void getResultData(IResult iResult){ String result = "this is result"; iResult.getResult(result); }}
activity中的代码:
<span style="white-space:pre"></span>BaseFragment fragment = new BaseFragment(); fragment.getResultData(new BaseFragment.IResult(){ @Override public void getResult(String result) { Toast.makeText(MainActivity.this,"result" + result,Toast.LENGTH_SHORT).show(); } });
0 0
- Android Fragment学习笔记
- android fragment学习笔记
- android Fragment demo学习
- android Fragment demo学习
- Android学习之 Fragment
- android学习Fragment小计
- 学习笔记 android fragment
- android Fragment 学习笔记
- Android Fragment 学习<1>
- android Fragment学习
- Android Fragment组件学习
- Android学习笔记 - fragment
- Android Fragment学习总结
- Android Fragment学习
- android fragment学习总结
- android学习-----Fragment
- Android Fragment 组件学习
- Android学习--viewpager+ Fragment
- Android Java 线程暂停与继续
- 备份个函数,应该能用到!!
- ORACLE 下载
- shader开发_1.shader基本结构
- Q26复杂链表的复制
- Android Fragment 学习
- C#之LINQ基础 查询语法,方法语法,组合语法实例
- JAVA AOP浅谈
- jQuery 跨域访问教程 XMLHttpRequest cannot load 解决办法
- HDU 1272 小希的迷宫
- 这些工具都可以帮你编写代码
- Oracle(入门三)
- Spring的Dao Service采用单例模式+ThreadLoca模式实现线程安全
- Android线程操作类(暂停、重新开启、停止)