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

Android中的Fragment使用 原

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

49630

Android中Fragment+ViewPager的配合使用

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

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

    再见 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.4K30

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

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

    28720

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

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

    1.7K10

    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

    1.3K30

    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.6K40

    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.8K20

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

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

    76320

    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(), 所有ViewPager中的Fragment都会执行onResume(),所以在很容易造成网络丢包或者网络堵塞等问题,所以Fragment使用懒加载机制,只有当Fragment真正对用户可见时

    1.4K10

    【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.4K20

    startActivityForResult被标记为弃用后,如何优雅的启动Activity?

    文章目录 一、如何解决 startActivityForResult 被弃用? 二、ActivityResultContract 该如何使用?...可以明显的看到,在androidx.activity1.2.0-alpha04时开始,Android中这位你调用过无数次的startActivityForResult和onActivityResult,...但倘若编写一个稍复杂的页面,需要同时请求相册、需要在其它Activity选择数据并回调、需要判断权限等等时,继续使用startActivityForResult,会导致onActivityResult里掺杂各种嵌套及判断...同时,引用一个官方文档的警告 ↓ 注意:虽然在 fragment 或 activity 创建完毕之前可安全地调用 registerForActivityResult(),但在 fragment 或 activity...如果有需要,我会再写一篇使用较少的在单独的类中接收 Activity 结果和Activity Result API的源码解析。技术有限,若文中有错误遗漏之处,尽情谅解,也欢迎指正共同进步。

    3.2K20

    优雅的监听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,做接口隔离。

    2.2K70

    Android Fragment 的妙用 - 优雅地申请权限和处理 onActivityResult

    前言 Fragment,简称碎片,可以简单地认为它就是一个“控件”,更加具体一点就是“View控制器”。它自身有生命周期。在开发中,我们经常用到,再熟悉不过了。...使用 Fragment 封装权限申请 使用 Fragment 优雅处理 onActivityResult Activity reCreate 的时候用来存储数据 这篇文章主要讲解以下内容 使用 Fragment...---- Fragment 封装权限申请 Android 6.0 动态权限机制,大家再熟悉不过了,如果我们没有对其进行封装,那我们每一次在申请权限的时候,大概需要以下几步: 这里我们已拨打电话为例子进行讲解...当我们申请权限申请的时候,先查找我们当前 Activity 是否存在代理 fragment,不存在,进行添加,并使用代理 Fragment 进行申请权限 第二步:在代理 Fragment 的 onRequestPermissionsResult...---- 使用 Fragment 优雅处理 onActivityResult 我们先来看一下没封装之前 onActivityresult 的处理方式 我们先来看下正常情况下启动 Activity 和接收回调信息的方式

    2.1K30

    使用 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

    34410
    领券