Fragment 多层嵌套方法调用问题的解决方案

作者:NELA 时间:2023-09-29 08:12:38 

Fragment的产生与介绍

Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

Fragment的生命周期

Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。官网这张图很好的说明了两者生命周期的关系:

Fragment 多层嵌套方法调用问题的解决方案

下面介绍下Fragment多层嵌套情况下如何解决方法调用的问题

可能会出现同一个Activity中

对象1: A fragment

对象2:B fragment 中 a listview 或 a viewadapter

交互情况:B fragment 中的某一界面 获取到信息后(可能是网络信息等),传递给A fragment 或者 A fragment 处理过事件后又要通知B fragment 下的界面做出改变。

方案1

调用方法 通过中间人 Activity

在B fragment 内 通过中间人 Activity 获取到 A fragment 对象 调用A fragment 中的方法

弊端: 当有很多层时 这种中间人的获取就变成了多层中间人 ,需要处理中间人很多次

例如:想要调用在B fragment 中的 viewpager 的list 中的 pager类父类 的子类对象中的方法时

1,子类对象需要重写该方法

2,需要将父类定义该方法

3,需要将B fragment 中找到list 中的子类对象并调用该方法

4,需要在A Fragment 中找到 Bfragment 对象 调用该方法

由此可见 当嵌套方式越复杂, 这个方法需要处理的 层次关系就越多。。。所以采用方案2

方案2

接口方式

在A fragment 中 定义接口

这里展示案例 通过定义接口的方式在Afragment 调用B fragment 的方法:


public class A_Fragment extends BaseFragment {
private onSwitchpaperListener onSwitchpaperListener;
//定义接口和接口方法
public interface onSwitchpaperListener{
void switchpaper(int i);
}
//对外提供一个设置监听的方法。
public void setOnSwichtpaerListener(onSwitchpaperListener listener){
this.onSwitchpaperListener=listener;
}
@Override
public void intiEvent() {
//这这之前处理了很多逻辑和信息后需要将消息通过Afragment 传递给B了
if(onSwitchpaperListener!=null){
onSwitchpaperListener.switchpaper(position);
}else {
}
}
}

而Bfragment 只需要 实现接口并 重写接口方法 即可被A fragment 调用

在B fragment 中的 许多莫名嵌套内的类中:


mainActivity.getAFragment().setOnSwichtpaerListener(new Slidingleft_Fragment.onSwitchpaperListener() {
@Override
public void switchpaper(int i) {
BaseCenterPaper currentPaper= baseCenterPaperList.get(i);
tv_title.setText(lists.get(i).getTitle());
//先移除
fl.removeAllViews();
currentPaper.initData();
fl.addView(currentPaper.getRoot());
}
});

以上所述是小编给大家介绍的Fragment 多层嵌套方法调用问题的解决方案网站的支持!

来源:http://blog.csdn.net/cuizehui123/article/details/52245481

标签:fragment,多层,嵌套
0
投稿

猜你喜欢

  • Java源码解析之接口List

    2022-06-13 08:46:44
  • java高并发的线程中断的几种方式详解

    2022-08-25 01:35:09
  • 解决Mybatis的@Param()注解导致分页失效的问题

    2022-05-01 13:24:53
  • 判断图片-判断位图是否是黑白图片的方法

    2023-06-09 17:20:07
  • springmvc @RequestBody String类型参数的使用

    2023-03-08 09:30:05
  • Java实现简单图书借阅系统

    2023-11-22 01:09:02
  • Java中流的有关知识点详解

    2022-07-21 15:38:21
  • 关于@RequestLine的使用及配置

    2023-09-23 20:52:19
  • SpringBoot实现RAS+AES自动接口解密

    2022-11-05 04:07:01
  • Java基于Tcp/ip连接的多人交互聊天室

    2022-03-31 17:47:35
  • 遍历文件系统目录树的深入理解

    2022-09-15 20:03:46
  • Servlet中/和/*的区别详解

    2022-07-11 03:21:33
  • Android开发之搜索框SearchView用法示例

    2021-10-30 03:40:19
  • Java中使用内存映射实现大文件上传实例

    2022-01-16 05:02:16
  • Netty分布式源码分析监听读事件

    2022-10-23 20:59:43
  • 手机方向传感器的缺点及解决方法探究

    2021-12-27 08:58:58
  • Spring MVC结合Spring Data JPA实现按条件查询和分页

    2023-03-04 07:24:36
  • idea 多模块项目依赖父工程class找不到问题的方法

    2022-06-08 10:47:41
  • java仿windows记事本小程序

    2023-11-25 09:24:43
  • Jetpack Compose常用组件详细介绍

    2022-10-16 19:42:58
  • asp之家 软件编程 m.aspxhome.com