首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AndroidFragment使用

Android开发Fragment主要用来提供更灵活的界面构造形式,顾名思义,英语fragment一词就是片段的意思。...我们可以创建一个扩展自Fragment的类,重载的onCreateView方法填充xml定义的布局,然后在其容器Activity所使用的xml布局文件,像引入其它视图组件一样对其进行引入。...作为容器的Activity代码中使用FragmentManager可以获取到对这个Fragment的引用。...类定义的一个接口,同时Fragment定义该接口类型的一个成员,重载的onAttach获取容器activity引用,赋值给该成员。...这样当触发了Fragment的某个组件的事件,就能调用该接口的方法,实现Fragment向容器Activity传递消息和数据了。

47030

AndroidFragment+ViewPager的配合使用

官方推荐 ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期,这里有标准的适配器实现用于ViewPager和Fragment,涵盖最常见的用例。...(savedInstanceState);         //这里我只是简单的用num区别标签,其实具体应用可以使用真实的fragment对象来作为叶片         mNum = getArguments...效果与ViewPager添加View的效果是一样的!但是它与View的区别在于它有自己的生命周期,可以随时更改自己的状态便于管理。...事实上使用FragmentPagerAdapter Fragment对象会一直存留在内存,所以当有大量的显示页,就不适合用FragmentPagerAdapter了,FragmentPagerAdapter...这个时候你可以考虑使用FragmentStatePagerAdapter ,当使用FragmentStatePagerAdapter ,如果Fragment不显示,那么Fragment对象会被销毁,(

980100
您找到你想要的搜索结果了吗?
是的
没有找到

Android使用ViewPager快速切换Fragment卡顿的优化方案

当ViewPager切换到当前的FragmentFragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即Fragment需要加载UI内容,而又频繁地切换Fragment,就容易产生卡顿现象...风险:Fragment比较多的情况下,部分低端机型容易产生OOM问题。...3.Fragment内容延迟加载 (1) 描述 切换到当前Fragment的时候,并不立刻去加载Fragment的内容,而是先加载一个简单的空布局,然后启动一个延时任务,延时时长为T,当用户Fragment...停留时间超过T,继续执行加载任务;而当用户切换到其他Fragment,停留时间低于T,则取消该延时任务。...这里我使用的做法是,给ViewPager增加一个OnPageChangeListener,,该监听器的onPageSelected(position)能监听ViewPager当前切换到哪个Fragment

2.5K30

再见 onActivityResult!你好 Activity Results API

这次带来的是新API的使用。 PS: 关于Android的博客文章,以后都会使用Kotlin来进行展示,还没有学习Kotlin的小伙伴抓紧学习波咯,这是Android的趋势。...(requestCode, resultCode, data); } } Android应用程序开发,比较常见的场景是从启动的Activity获取数据,传统的方式是使用startActivityForResult...Google可能已经到了onActivityResult方法的这些问题,因此androidx.activity:activity:1.2.0-alpha02和androidx.fragment:fragment...非Activity/Fragment接收数据 Activity和Fragment,我们能直接使用registerForActivityResult方法 ,那是因为ConponentActivity...和Fragment基类实现了ActivityResultCaller 接口,非Activity/Fragment,如果我们想要接收Activity回传的数据,可以直接使用ActivityResultRegistry

1.2K30

如何向前一个Fragment回传信息?

前言 我们使用Activity的时候,可以通过startActivityForResult来启动一个新的Activity,然后新的Activity可以用setResult来向前一个Activity...回传一些结果信息,前一个Activity会在onActivityResult得到这个信息。...那么当我们使用Fragment的形式来作为页面的时候呢?我们知道可以使用setArguments向后面的Fragment传递信息,但是如何回传结果信息?...resultCode, intentData); 这样前一个Fragment就可以它的onActivityResult处理这些回传信息。...上面可以发现其实就是将前一个Fragment对象交给后面的Fragment持有而已,我们自己创建一个set函数其实也可以实现,但是还是推荐使用Android提供的setTargetFragment,来看看它的源码

25720

Fragment 当中使用 Kotlin-Android-Extensions 需要注意的

可是有了 kotlin-android-extensions 之后,我们可以直接在 Activity、 Fragment、 View 当中使用这个 logoutView 了。...,第一次会最终调用到 findViewById,后面再使用它的话就直接从缓存获取了。... Fragment使用 Kae 有什么毛病? 好啦,介绍到此,我们来说说问题。...注意这一行,我们访问 userNameView ,本质上相当于调用前面提到的编译期为 Fragment 生成的一个方法,这个方法会先从缓存查找,接着再去 Fragment 的 View 查找,那么问题来了...当然,还有一种思路,上文当中我用到了 RxJava,我可以通过自定义一个 UI 生命周期相关的 Scheduler,在生命周期发生变化时,一方面可以统一取消请求,另一方面,也可以控制 UI 已经无效

1.6K10

onActivityResult!你好,Activity Results API!

背景 Android应用程序开发,启动一个Activity不一定是单项操作,从启动的Activity获取数据是常见的场景,最传统的方式是通过Intent携带数据,然后使用startActivityForResult...介绍如何使用之前,先为大家介绍Activity Results API 两个重要的组件:ActivityResultContract和ActivityResultLauncher。...( Kotlin 使用 Void?...非Activity/Fragment的类接收Activity的结果 Activity和Fragment,我们能直接使用registerForActivityResultAPI ,那是因为ConponentActivity...和Fragment基类实现了ActivityResultCaller 接口,非Activity/Fragment,如果我们想要接收Activity回传的数据,可以直接使用 ActivityResultRegistry

1.5K40

Jetpack:使用 ActivityResult 处理 Activity 之间的数据通信

Android,我们如果想在Activity之间双向传递数据,需要使用startActivityForResult启动,然后onActivityResult处理返回,另外申请权限也是类似的步骤。...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证 Activity 发送或接收数据参数的类型安全。...ActivityResult使用 使用ActivityResult先添加依赖: dependencies { // https://developer.android.google.cn/jetpack...:activity:$activity_version" implementation "androidx.fragment:fragment:$fragment_version” } 然后先看看最简单的使用方式...但是实际上返回是onActivityResult函数,这里就需要关注mPendingResults,ActivityResultRegistry的doDispatch函数为它赋予了数据,而doDispatch

92230

onActivityResult!你好,Activity Results API!

背景 Android应用程序开发,启动一个Activity不一定是单项操作,从启动的Activity获取数据是常见的场景,最传统的方式是通过Intent携带数据,然后使用startActivityForResult...介绍如何使用之前,先为大家介绍Activity Results API 两个重要的组件:ActivityResultContract和ActivityResultLauncher。...( Kotlin 使用 Void?...非Activity/Fragment的类接收Activity的结果 Activity和Fragment,我们能直接使用registerForActivityResultAPI ,那是因为ConponentActivity...和Fragment基类实现了ActivityResultCaller 接口,非Activity/Fragment,如果我们想要接收Activity回传的数据,可以直接使用 ActivityResultRegistry

1.7K20

Android高频面试专题 - 基础篇(二)Fragment

Android 3.0(API 11)提出的,为兼容低版本,v4包也开发了一套Fragment API,现已移到androidx维护。...onDetach(): 将该Fragment从Activity删除、替换完成回调该方法,onDestroy()方法后一定会回调onDetach()方法,该方法只会被调用一次。...3、如何获取 FragmentManger Activity 通过 getSupportFragmentManager获取 Fragment 通过 getChildFragmentManager获取...6、startActivityForResult 之坑 Fragment 请勿使用 getActivity().startActivityForResult(),这样 Framgnet onActivityResult...onResume(), 所有ViewPagerFragment都会执行onResume(),所以很容易造成网络丢包或者网络堵塞等问题,所以Fragment使用懒加载机制,只有当Fragment真正对用户可见

1.3K10

使用 Jetpack ActivityResult 处理 Activity 之间的数据通信

作者 / Yacine Rezgui 无论您是应用请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用获取到某些数据,都会涉及到 Activity 之间传递数据,而这也正是 Android...之前,想要从启动的 Activity 获取到返回结果,应用需要在 Activity 和 Fragment 实现 onActivityResult() 方法,然后检查回调关联到哪一个 requestCode...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证 Activity 发送或接收数据参数的类型安全。...您也可以启动 Activity 的地方使用一个独立的类接收返回结果,这样依然能够保证类型安全。 如何使用 接下来我们通过一个打开文档的示例,来演示如何使用 ActivityResult API。..." // https://developer.android.google.cn/jetpack/androidx/releases/fragment 获得最新版本号 def fragment_version

30710

android调用相册和摄像头_网页调用摄像头拍照

--请求访问使用照相设备--> 2 设置标志(回传码) // 拍照回传码 public...可以放在公共类,设置为全局变量 3 相应的java类: // 拍照的照片的存储位置 private String mTempPhotoPath; // 照片所在的Uri地址...) { fragment4ImageView0 = findViewById(R.id.fragment4ImageView0); if (resultCode == MainActivity.RESULT_OK...是否有findViewById 如果是onActivityResult设置的setImage 即使onCreatefindView 了也是不行的 要在onActivityResultfindView...:用户没有录音操作,但app在后台调用AudioRecord,会让系统认为是录音,状态栏就有红色录音提示 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125285

69320

使用 Jetpack ActivityResult 处理 Activity 之间的数据通信

作者 / Yacine Rezgui 无论您是应用请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用获取到某些数据,都会涉及到 Activity 之间传递数据,而这也正是 Android...之前,想要从启动的 Activity 获取到返回结果,应用需要在 Activity 和 Fragment 实现 onActivityResult() 方法,然后检查回调关联到哪一个 requestCode...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证 Activity 发送或接收数据参数的类型安全。...您也可以启动 Activity 的地方使用一个独立的类接收返回结果,这样依然能够保证类型安全。 如何使用 接下来我们通过一个打开文档的示例,来演示如何使用 ActivityResult API。...正如您看到的代码片段,ActivityResult 处理来自 Activity 的返回数据带来了更便捷的开发体验。

86430

优雅的监听onActivityResult

一、思考 当Activity A启动一个Activity B后,B finish,我们可能需要处理B返回的值,此时,我们可能就需要用到了onActivityResult,需要在Activity A重写实现...当然,在这种前提是我们处理逻辑都是放在Activity A类,那么假如我们是一个其他类,不是Activity或者Fragment的情况呢?...当我看到Google的开源的lifecycle库的HolderFragment的做法,感觉眼前一亮。Activity或者Fragment添加一个空壳的Fragment,作为一个生命周期的监听。...所以我产生以下思路:通过给当前的Activity添加一个空壳的Fragment,往空壳的Fragment传入Listener,然后由该Fragment去启动新的Activity,最终在这个空壳的Fragment...二、撸码 1、 首先,我们对外暴露一个Fragment需要实现的接口,让外部使用这个接口,而不是直接使用这个Fragment,做接口隔离。

2K70

【Jetpack更新之Fragment】1.3.0-alpha04 来袭,Fragment 间通信的新姿势

版状态,可以添加、移除或更改 API。...因此 Alpha 版本不适合在生产上使用 ❞ ? 来自我的另一篇博客 target fragment API 被弃用 其实 target fragment API 早已被弃用 ?...fragment 之间传递数据的新方式 前文提到,相同的 FragmentManager 可以使用 target fragment API 来 fragment 间传递数据,但这种方式需要直接访问目标...fragment 的实例,这很危险,因为目标 fragment 的状态是未知的 因此官方提供了这样的 API,它允许一个 fragment 上设置结果,并将该结果在 fragment 的适当的生命周期中使用..., and Future (Android Dev Summit '19) 中提到了 fragment 间通信的问题,未来 fragment 会整合 fragment 自身和其内部 view 的生命周期

1.3K20
领券