首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏该溜子的专栏

    【Android】使用FragmentManager动态添加片段

    void onClick(View v) { MyFragment myFragment = new MyFragment(); //获取管理器,开始事务 FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction 在这里管理更方便 tag移除,这是Fragment的一个标签 2:获取管理器和开始事务 这两行代码尽量不要提取成方法成员变量,避免一些未知错误 //获取管理器,开始事务 FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction 中提供的方法在当前类中直接获取Fragment管理器 (2)使用事务 开始事务 将当前某个Activity关联控件当中 第一个参数,第二个参数:你要添加的是哪个Fragment,第三个参数:要添加的Fragment在FragmentManager

    30110编辑于 2025-08-26
  • 来自专栏24K纯开源

    Android中的FragmentManager的问题

    在Fragment的开发文档中明确指出,Fragment的管理都是通过FragmentManager来实现的,那么问题出现在哪呢?在网上搜了一番终于发现了症结所在。

    1.1K50发布于 2018-01-18
  • android FragmentManager 删除所有Fragment 重建

    FragmentManager 是 Android 中用于管理 Fragment 的组件,它是 Fragment 生命周期和后退栈操作的核心。 FragmentManager 允许开发者添加、移除、替换和找到 Fragment 实例,同时处理 Fragment 之间的交互和事务。 要删除Android FragmentManager中的所有Fragment并重建它们,您可以遵循以下步骤:获取FragmentManager实例。 FragmentManager fragmentManager = getSupportFragmentManager(); // 如果在AndroidX中使用// 或// FragmentManager 以下是一个示例代码,演示如何删除所有Fragment并重建它们:// 获取FragmentManager实例FragmentManager fragmentManager = getSupportFragmentManager

    92210编辑于 2024-08-17
  • 来自专栏移动开发专栏

    onGetLayoutInflater() cannot be executed until the Fragment is attached to the FragmentManager.

    调用的是Activity的getLayoutInflater 这句代码原本是没有什么问题的,但是在Fragment中使用就有问题了。

    67510编辑于 2022-06-10
  • 来自专栏拭心的安卓进阶之路

    Android 进阶17:Fragment FragmentManager FragmentTransaction 深入理解

    先来看看 FragmentManagerFragmentManager public abstract class FragmentManager {...} (FragmentManager fm, Fragment f) {} public void onFragmentSaveInstanceState(FragmentManager fm FragmentManager 所有 Fragment 生命周期变化的回调。 以及回退栈的列表,这和 FragmentManager 的要求一致。 Fragment、FragmentManager、FragmentTransaction 关系 Fragment 其实是对 View 的封装,它持有 view, containerView, fragmentManager

    2.8K100发布于 2018-01-05
  • 在 Android 中使用 FragmentManager 删除所有的 Fragment

    如何在 Android 中使用 FragmentManager 删除所有的 Fragment 并重新创建它们 在 Android 中,FragmentManager 可以用来管理 Fragment 的添加 本文将介绍如何使用 FragmentManager 来实现这个功能。 步骤1:获取 FragmentManager 对象 首先,我们需要获取 FragmentManager 对象。 在 Activity 中的示例代码如下: FragmentManager fragmentManager = getSupportFragmentManager(); 步骤2:删除所有的 Fragment 接下来,我们可以使用 FragmentManager 的 popBackStack() 方法来删除所有已添加的 Fragment。 总结 本文介绍了如何使用 FragmentManager 删除所有的 Fragment,并重新创建它们的步骤。

    25310编辑于 2025-08-29
  • 来自专栏算法微时光

    android之getSupportFragmentManager介绍

    FragmentManager FragmentManager顾名思义是用来管理fragment的. getSupportFragmentManager()就是获取所在fragment 的父容器的管理器 FragmentManager宿主环境指的是其管理类,通常在Activity中通过接口getSupportFragmentManager或者getFragmentManager获得FragmentManager 对象, 可以认为Activity是FragmentManager的宿主环境类. FragmentManager宿主环境类状态变化时(如onStart, onResume, onStop等回调),FragmentManager的状态也随之更新(FragmentManager类有一个成员变量 从用户的角度来看, FragmentManager的宿主环境类管理了一系列Fragment,并且Fragment随着FragmentMannager的宿主环境类的状态变化而变化. image.png

    3.2K20发布于 2021-01-13
  • 来自专栏Android开发经验分享

    Duplicate id 0x7f0900af, tag null, or parent id 0xffffffff with another frag

    at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269) </RelativeLayout> java代码 private void initMap() { FragmentManager fragmentManager = getFragmentManager (); if (fragmentManager ! </RelativeLayout> private void initMap() { FragmentManager fragmentManager = getChildFragmentManager (); SupportMapFragment mapFragment = new SupportMapFragment(); fragmentManager.beginTransaction

    92330编辑于 2022-12-19
  • 来自专栏Android 开发者

    全新的 Fragment: 使用新的状态管理器

    如果您使用 Fragment,就是通过 FragmentManager 来进行添加、移除和交互操作。 提示 : 本文中我会谈论很多关于 FragmentManager 的内部原理。 FragmentManager 的 moveToState() 方法 每个 FragmentManager 都关联着一个宿主 (host)。 然而,FragmentManager 似乎并没有按照这个过程操作,而是将 Fragment 和整个 FragmentManager 置于一个奇怪的、不一致的状态。 协调其它 Fragment 通过分离 FragmentManager,整体逻辑已经在各个层次进行了大幅简化: FragmentManager 仅仅包含用于所有 fragment 的状态 FragmentStateManager

    1.1K30发布于 2021-01-26
  • 来自专栏Android 开发者

    Android 多返回栈技术详解

    然后 FragmentManager 会将该事务作为它返回栈的一部分。 这会使得 FragmentManager 恢复到最初提交 Fragment 事务之前的状态。 这就需要调用 saveBackStack() 并且紧跟一个新的事务: fragmentManager.saveBackStack("profile") fragmentManager.commit { () 操作,然后调用 restoreBackStack(): fragmentManager.saveBackStack(“notifications”) fragmentManager.restoreBackStack (“profile”) 这两个堆栈项高效地交换了位置: △ 交换堆栈项后的 FragmentManager 状态 维持一个单独且活跃的返回栈并且将事务在其中交换,这保证了当返回按钮被点击时,FragmentManager

    1.3K10编辑于 2022-03-09
  • 来自专栏Android 开发者

    全新的 Fragment: 使用新的状态管理器

    提示 : 本文中我会谈论很多关于 FragmentManager 的内部原理。 FragmentManager 的 moveToState() 方法 每个 FragmentManager 都关联着一个宿主 (host)。 然而,FragmentManager 似乎并没有按照这个过程操作,而是将 Fragment 和整个 FragmentManager 置于一个奇怪的、不一致的状态。 也就是说将分散在 FragmentManager 中的逻辑集中到一个地方。 再通过容器中的 SpecialEffectsController 协调其它 Fragment 通过分离 FragmentManager,整体逻辑已经在各个层次进行了大幅简化: FragmentManager

    1.2K40发布于 2021-01-26
  • 来自专栏BennuCTech

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

    The target set here is retained * across instances via {@link FragmentManager#putFragment * FragmentManager.putFragment Fragment fragment, int requestCode) { // Don't allow a caller to set a target fragment in another FragmentManager but there's a snag: people do set target fragments before fragments get added. // We'll have the FragmentManager final FragmentManager mine = getFragmentManager(); final FragmentManager theirs = fragment ! throw new IllegalArgumentException("Fragment " + fragment + " must share the same FragmentManager

    39920编辑于 2021-12-10
  • 来自专栏分享达人秀

    Fragment显示和隐藏、绑定和解绑

    在上一期我们学习了FragmentManager和FragmentTransaction的作用,并用案例学习了Fragment的添加、移除和替换,本期一起来学习Fragment显示和隐藏、绑定和解绑。 对象 FragmentManager fragmentManager = getFragmentManager(); // 开启一个事务 FragmentTransaction 对象 FragmentManager fragmentManager = getFragmentManager(); // 开启一个事务 对象 FragmentManager fragmentManager = getFragmentManager(); // 开启一个事务 FragmentTransaction 对象 FragmentManager fragmentManager = getFragmentManager(); // 开启一个事务 FragmentTransaction

    3.1K70发布于 2018-03-26
  • 来自专栏编程思想之路

    activity嵌套fragment,fragment内嵌fragment之间传值切换fragment

    说一下getFragmentManger方法 /** * Return the FragmentManager for interacting with fragments associated * *

    If this Fragment is a child of another Fragment, the FragmentManager * returned here will be the parent's {@link #getChildFragmentManager()}. */ final public FragmentManager getFragmentManager() { return mFragmentManager; } /** * Return a private FragmentManager for placing and managing Fragments * inside of this Fragment. */ final public FragmentManager

    1.5K12编辑于 2022-05-07
  • 来自专栏写代码和思考

    android开发(41) Fragment跳转到栈底部

    代码: FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); String name = fragment.getClass().getName(); fragmentTransaction.replace (R.id.container, fragment).addToBackStack(nameForBackstackstate).commit(); 弹出时这么做: fragmentManager.popBackStackImmediate (FragmentA.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 这个方法的第二个参数 POP_BACK_STACK_INCLUSIVE

    55800发布于 2020-03-16
  • 来自专栏Android源码框架分析

    ViewPager刷新问题原理分析及解决方案(FragmentPagerAdapter+FragementStatePagerAdapter)ViewPager+FragmentPagerAdapte

    为什么呢,因为第二次setAdapter的时候,已经被FragmentManager缓存的Fragent不会被新建,也不会被刷新,因为FragmentPagerAdapter在调用destroy的时候, 采用的是detach的方式,并未真正的销毁Fragment,仅仅是打算销毁了View,这就导致FragmentManager中仍旧保留正Fragment的缓存: @Override public void 新的FragmentPagerAdapter被设置后,会通过instantiateItem函数来获取Fragment,这个时候它首先会从FragmentManager的缓存中去取Fragment,取到的 Fragmentmanager Transaction栈的意义 最后看一下Fragmentmanager中Transaction栈,FragmentManager的Transaction栈到底是做什么的呢 FragmentManager对于Fragment的缓存管理 FragmentManager主要维护三个重要List,一个是mActive Fragment列表,一个是mAdded FragmentList

    3.6K20发布于 2018-06-29
  • 来自专栏developerHaoz 的安卓之旅

    Android 撸起袖子,自己封装 DialogFragment

    fragmentManager, String message){ return showProgress(fragmentManager, message, true, null); } public static CommonDialogFragment showProgress(FragmentManager fragmentManager, String message , boolean cancelable){ return showProgress(fragmentManager, message, cancelable, null); } public static CommonDialogFragment showProgress(FragmentManager fragmentManager, final String message 就以 加载中的弹出窗 为例,来看看我们是怎么实现的 public static CommonDialogFragment showProgress(FragmentManager fragmentManager

    2.2K41发布于 2018-08-20
  • 来自专栏逮虾户

    有趣的Viewbinding委托

    = null private var fragmentManager: Reference<FragmentManager>? = null) return val fragmentManager = fragment.parentFragmentManager.also { fm -> this.fragmentManager = WeakReference(fm) } fragmentLifecycleCallbacks = ClearOnDestroy let { fragmentManager -> fragmentLifecycleCallbacks?. let(fragmentManager::unregisterFragmentLifecycleCallbacks) } fragmentManager = null

    85121编辑于 2022-04-24
  • 来自专栏用户8928967的专栏

    《Android编程权威指南》之UI fragment与fragment管理器

    中添加UI fragment FragmentManager 类负责 fragment 视图添加到 activity 中,具体会管理 fragment 队列和 fragment 事务回退栈。 activity被销毁时,它的FragmentManager会将fragment队列保存下来。 这样,activity重建时,新的FragmentManager会首先获取保存的队列,然后重建fragment队列,从而恢复到原来的状态。 的FragmentManager负责调用。 添加 fragment 供 FragmentManager 管理时,onAttach(Context?)、onCreate(Bundle?)和onCreateView(...)函数会被调用。

    77320发布于 2021-10-13
  • 来自专栏小鑫同学编程历险记

    原有Android项目中体验Flutter

    /> 在Activity中添加代码 // Define a tag String to represent the FlutterFragment within this // Activity's FragmentManager forward calls to it later. private FlutterFragment flutterFragment; // Get a reference to the Activity's FragmentManager FragmentManager fragmentManager = getSupportFragmentManager(); // Attempt to find an existing FlutterFragment flutterFragment = (FlutterFragment) fragmentManager .findFragmentByTag(TAG_FLUTTER_FRAGMENT if (flutterFragment == null) { flutterFragment = FlutterFragment.createDefault(); fragmentManager

    53540编辑于 2022-12-24
领券