让你在开发中爱不释手的 GT 包。关注GSLS官网,查看更多源码 ヾ(✿゚▽゚)ノ工具包。
所有文章 小编尽量让读者可以 直接 读懂 与 完全 复制粘贴,其中复杂或较多 的源码 会有 源码 并 贴上 github 网址。
GT 类 里面的源码完全开源,较多的中文注释,让更多的人直接读懂。
点个关注点个赞呗(〃'▽'〃),关注博主最新发布库: https://github.com/1079374315/GSLS_Tool
美帝 框架,让创造变得如此简单!
上一章节:Android——Fragment 新手教学第三章 使用创建好的 Fragment
上节的效果图:
跟着上一次的教程来,上一篇我们介绍到了如何使用创建好的 Fragment 本章节将介绍如何在 Fragment 之间切换的。
首先我们要在这个红色页面上的添加一个单击按钮,用于跳转页面。
布局文件 fragment_a.xml
修改对应的业务逻辑代码 Fragment_A.java
//使用 继承 BaseFragments 类的方式创建 Fragment
public class Fragment_A extends GT.GT_Fragment.BaseFragments {
@Override
protected int loadLayout() {
return R.layout.fragment_a;//加载布局
}
@Override
protected void initView(@NonNull View view, @Nullable Bundle savedInstanceState) {
//初始化 UI
//跳转页面
view.findViewById(R.id.btn_a).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//不带参数的 启动 Fragment
startFragment(Fragment_B.class);
//带从参数的 启动 Fragment
// Bundle bundle = new Bundle();
// bundle.putString("name","小明");
// startFragment(Fragment_B.newInstance(bundle));
}
});
}
@Override
protected void loadData() {
super.loadData();
}
}
带参数与不带参数的 切换 Fragment 方式有没有觉得非常像 Activity 之间的切换方式呢。
关键代码就是使用 startFragment 方法直接传入 Fragment的class 或者 Fragment 的对象即可完成切换。
实现效果图如下:
如果此时你 注释掉 不带参的方法, 解开了 带参数的 切花方式,你会发现有报红的代码,不急,我们接下来就来添加这些报红的方法。
我们给 fragment_b.xml 增加一个显示传递过来的参数的组件:
我们再给 Fragment_B.java 类添加 接收参数的代码:
//使用 继承 AnnotationFragment 类的方式创建 Fragment
@GT.Annotations.GT_AnnotationFragment(R.layout.fragment_b) //加载布局
public class Fragment_B extends GT.GT_Fragment.AnnotationFragment {
private TextView tv_name;
// 实例化 Fragment 并接收传过来的参数
public static Fragment_B newInstance(Bundle bundle) {
Fragment_B fragment = new Fragment_B();
fragment.setArguments(bundle);
return fragment;
}
@Override
protected void initView(@NonNull View view, @Nullable Bundle savedInstanceState) {
//初始化 UI
tv_name = view.findViewById(R.id.tv_name);
}
@Override
protected void loadData() {
super.loadData();
//业务逻辑处理
//获取传过来的参数
Bundle bundle = getArguments();
if (bundle != null) {
String name = bundle.getString("name");
tv_name.setText("我的名字:" + name);
}
}
}
接下来我们来看看效果图:
重写 newInstance 方法来进行传参是安全可靠的。
我们已经知道了怎么 启动一个新的 Fragment 现在我们来看看怎么 销毁一个 Fragment
销毁Fragment 只需要在想要销毁的 Fragment 调用 finish(); 方法即可,我们来修改一下代码:
Fragment_B.java
@GT.Annotations.GT_AnnotationFragment(R.layout.fragment_b) //加载布局
public class Fragment_B extends GT.GT_Fragment.AnnotationFragment {
private TextView tv_name;
// 实例化 Fragment 并接收传过来的参数
public static Fragment_B newInstance(Bundle bundle) {
Fragment_B fragment = new Fragment_B();
fragment.setArguments(bundle);
return fragment;
}
@Override
protected void initView(@NonNull View view, @Nullable Bundle savedInstanceState) {
//初始化 UI
tv_name = view.findViewById(R.id.tv_name);
}
@Override
protected void loadData() {
super.loadData();
//业务逻辑处理
//获取传过来的参数
Bundle bundle = getArguments();
if (bundle != null) {
String name = bundle.getString("name");
tv_name.setText("我的名字:" + name);
}
//给显示的结果设置单击事件 并 单击后销毁当前 Fragment
tv_name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();//销毁当前 Fragment 页面
}
});
}
}
效果图如下:
单击文本框的时候没有什么按下效果,不过还是销毁了当前的 Fragment
下一章:Android——Fragment 新手教学第五章 恢复数据与监听返回Fragment