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

从后台返回活动后,未调用FragmentPagerAdapter上的setPrimaryItem()

()是指在Android开发中,当一个活动从后台返回到前台时,未调用FragmentPagerAdapter上的setPrimaryItem()方法。

FragmentPagerAdapter是Android中的一个适配器类,用于管理Fragment的切换和显示。它继承自PagerAdapter,并且适用于固定数量的Fragment页面,比如TabLayout和ViewPager结合使用的场景。

setPrimaryItem()方法是FragmentPagerAdapter中的一个重要方法,用于设置当前显示的Fragment。当活动从后台返回到前台时,应该调用setPrimaryItem()方法来确保当前显示的Fragment正确。

如果未调用setPrimaryItem()方法,可能会导致以下问题:

  1. Fragment页面显示不正确:未调用setPrimaryItem()方法可能导致当前显示的Fragment与实际应该显示的Fragment不一致,从而导致界面显示错误。
  2. 数据加载错误:未调用setPrimaryItem()方法可能导致当前显示的Fragment没有正确加载数据,从而导致数据显示错误或缺失。

为了解决这个问题,可以在活动的onResume()方法中调用FragmentPagerAdapter的setPrimaryItem()方法,将当前显示的Fragment设置为正确的Fragment。具体代码如下:

代码语言:txt
复制
@Override
protected void onResume() {
    super.onResume();
    // 获取当前显示的Fragment
    Fragment currentFragment = fragmentPagerAdapter.getItem(viewPager.getCurrentItem());
    // 设置当前显示的Fragment
    fragmentPagerAdapter.setPrimaryItem(viewPager, viewPager.getCurrentItem(), currentFragment);
    fragmentPagerAdapter.finishUpdate(viewPager);
}

在这个问题中,建议使用腾讯云的相关产品进行开发。腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以满足各种开发需求。具体推荐的产品和介绍链接如下:

  1. 云服务器(ECS):提供弹性计算能力,支持多种操作系统和应用场景。详情请参考:腾讯云云服务器
  2. 云数据库(CDB):提供高可用、可扩展的数据库服务,支持多种数据库引擎。详情请参考:腾讯云云数据库
  3. 云存储(COS):提供安全可靠的对象存储服务,适用于存储和处理各种类型的数据。详情请参考:腾讯云云存储

以上是对于从后台返回活动后未调用FragmentPagerAdapter上的setPrimaryItem()的完善和全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ViewPager 获取当前显示Fragment

方法找到它;但问题是动态创建的话 tag设置;我们知道动态加载时是可以设置tag,但是动态创建就没法设置了;如果viewpager使用是适配器是 FragmentPagerAdapter 的话...,Fragment就会被设置tag 根据这个tag 我们就可以获取到当前显示fragment了;下面看看这个过程 新创建时 tag ==null @Override public Fragment...:      ViewPager id 0 :      ViewPager 当前显示itemPostion 既然FragmentPagerAdapter特点是保存fragment状态。...:"+pager.getId()+":"+pager.getCurrentItem()); ---- 重写适配器 setPrimaryItem()方法 ; 这个方法在每次viewpager滑动都会被调用...(container, position, object); } 这种方式有一个缺陷 setPrimaryItem()是在 viewpager滑动监听执行完才会调用;所以在 换个滑动监听中获取当前显示

3.7K80
  • Android面试题避坑:ViewPager中Framgent如何实现懒加载?

    在创建 Fragment,根据 behavior 调用了setMaxLifecycle。...推进过程中根据 mMaxState 对生命周期 值得一提是,FragmentStateManager 是 1.3.0-alpha08 之后新增类,将原来和 State 相关逻辑FragmentManager...Fragment 1.3.0-rc01 已经支持设置最大生命周期为 INITIALIZED 面试前复习路线参考 接下来分享系统学习资源以详解各大互联网公司 Android 常见面试题为主线,面试角度带你介绍必备知识点...帮你在现在基础,重新梳理和建立 Android 开发知识体系。...架构基础开始,分了8个模块来逐步基础进阶到架构师环节: 多余的话就不讲了,接下来将分享面试一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我复习路线,有任何问题也欢迎一起互相交流

    95860

    Fragment全解析系列(二):正确使用姿势

    ---- Fragment是可以让你app纵享丝滑设计,如果你app想在现在基础性能大幅度提高,并且占用内存降低,同样界面Activity占用内存比Fragment要多,响应速度Fragment...---- 作为一个稳定app,后台且回到前台,一定会在任何情况都能恢复到离开前页面,并且保证数据完整性。...再从后台返回到前台时,app会重启。...1、区别 show(),hide()最终是让FragmentView.setVisibility(true还是false),不会调用生命周期; replace()的话会销毁视图,即调用onDestoryView...但是如果流程较为复杂,比如Fragment A需要启动一个新Fragment B并且关闭当前A,或者A启动B,B在获取数据,想在返回到A时把数据交给A(类似ActivitystartActivityForResult

    1.4K30

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

    主要是支持在大屏幕动态和更为灵活去组合或是交换UI组件,通过将Activity布局分割成若干个Fragment,可以在运行时编辑Activity呈现,并且那些变化会被保存在由Activity管理后台栈里面...onDetach(): 将该FragmentActivity中删除、替换完成时回调该方法,在onDestroy()方法一定会回调onDetach()方法,该方法只会被调用一次。...和 FragmentStatePagerAdapter fragmentPagerAdapter在destroyItem()时候调用是detach()方法,只是把UI进行了分离,并没有真正移除fragment...Fragment detach() 会将viewUI中移除,和remove()不同,此时fragment状态依然由FragmentManager维护 attach() 重建view视图,附加到UI并显示...11、后台运行缺陷 你应用由FragmentA切换到FragmentB,被置于后台(例如用户点击了home),长时间你会发现当你再次通过home打开时,上面FragmentA与FragmentB叠加在一起

    1.4K10

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

    为什么呢,因为第二次setAdapter时候,已经被FragmentManager缓存Fragent不会被新建,也不会被刷新,因为FragmentPagerAdapter调用destroy时候,...新FragmentPagerAdapter被设置,会通过instantiateItem函数来获取Fragment,这个时候它首先会FragmentManager缓存中去取Fragment,取到...Fragment其实就是之前销毁Fragment,就会导致之前传递参数仍然是旧,这也是为什么可能不会刷新原因: @Override public Object instantiateItem(...FragmentManager对于Fragment操作是分批量进行,在一个Transaction中有多个add、remove、attach操作,Android是有返回,为了支持点击返回键恢复上一个场景操作...简单看一下出栈操作,其实就是将原来操作翻转一遍,当然,并不是完全照搬,还跟当前Fragment状体有关。

    3.3K20

    android FragmentpagerAdapter和FragmentStatePagerAdapter区别

    这也是为什么很多人发现调用 PagerAdapter.notifyDataSetChanged() ,getItem() 没有被调用一个原因。...FragmentPagerAdapter 会将所有生成 Fragment 对象通过 FragmentManager 保存起来备用,以后需要该 Fragment 时,都会 FragmentManager...在我们继承子类中,重载该函数,并调用 FragmentPagerAdapter.instantiateItem() 取得该函数返回 Fragment 对象,然后,我们该 Fragment 对象中对应方法...代码,基本都可以在 instantiateItem() 被调用时执行,但这和设计意图不符。...instantiateItem() 除非碰到 FragmentManager 刚好 SavedState 中恢复了对应 Fragment 情况外,该函数将会调用 getItem() 函数,生成新

    1K90

    Android Fragment用法知识点讲解

    第三步,调用addToBackStack(true)方法,目的为了允许用户通过按下返回按键返回到前一个Fragment状态,beginTransaction.commit()提交。...FragmentPagerAdapter和FragmentStatePagerAdapter FragmentPagerAdapter适用于页面较少情况,把UI分离,并没有回收,FragmentStatePagerAdapter...图片来源官方: 生命周期 onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段被调用创建; onCreateView(): 创建并返回相关视图结构; onActivityCreated...(): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联

    1K60

    Android Fragment用法实例详解

    第三步,调用addToBackStack(true)方法,目的为了允许用户通过按下返回按键返回到前一个Fragment状态,beginTransaction.commit()提交。...FragmentPagerAdapter和FragmentStatePagerAdapter FragmentPagerAdapter适用于页面较少情况,把UI分离,并没有回收,FragmentStatePagerAdapter...onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段被调用创建; onCreateView(): 创建并返回相关视图结构; onActivityCreated(...): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联。

    1.4K31

    ViewPager快速实现引导页

    FragmentPagerAdapter、FragmentStatePagerAdapter,它们分别有不同特性,本期会先来学习PagerAdapter。...如果不是相邻情况,比如我第一个页面跳到第三个页面,position先是0,然后逐步变成1,然后逐步变成2;我第三个页面跳到第一个页面,position先是1,然后逐步变成0,并没有出现为2情况。...destroyItem(ViewGroup, int, Object):移除给定位置view,适配器有责任将该viewcontainer中移除,确保在finishUpdate(viewGroup)返回时...finishUpdate (ViewGroup container):展示界面中改变完成时调用。在这个时间点,你必须确保所有的页面已被合适container中添加或移除。...setPrimaryItem (ViewGroup container, int position, Object object):调用该方法去通知当前适配器哪一项被考虑为“primary”,它是当前展示给用户页面

    1.4K70

    Android基础:Fragment,看这篇就够了 ( 下 )

    作者:夏正冬 接《Android 基础:Fragment,看这篇就够了 ()》 ViewPager+Fragment相关 基本使用 ViewPager是support v4库中提供界面滑动类,继承自...但是一般来说,通常都会使用PagerAdapter两个子类:FragmentPagerAdapter和FragmentStatePagerAdapter作为ViewPager适配器,他们特点是界面是...FragmentPagerAdapter和FragmentStatePagerAdapter需要重写方法都一样,常见重写方法如下: public FragmentPagerAdapter(FragmentManager...Fragment getItem(int position): 返回第position位置Fragment,必须重写。 int getCount(): 返回ViewPager页数,必须重写。...因为setUserVisibleHint(true)在界面可见时都会调用,如果滑到该界面做过数据加载,滑走,再滑回来,还是会调用setUserVisibleHint(true),此时由于mIsInited

    2K00

    Android面试题总结【完整详细版本”一”】(含答案)

    大家好,又见面了,我是你们朋友全栈君。 1、四大组件是什么? Activity【活动】:用于表现功能。 Service【服务】:后台运行服务,不提供界面呈现。...这说明对话框并没有使Activity进入后台,而是在点击了Home键Activity才进入后台工作。...这个时候B【B不是一个透明窗体或对话框形式】已经覆盖了A窗体,A会调用onStop()方法。 6、 前台切换到后台,然后再回到前台,Activity生命周期回调方法。...如果重写了FragmentPagerAdapterDestroyItem方法,并且相关Fragment已经加载过: 相互切换时只会调用setUserVisibleHint Fragment...此方法弥补了我们HTTP协议无状态不足。之前当上述请求响应操作完成,服务端和客户端就断开连接,服务端 就无法连接上跟踪我们所想要客户端。

    89020

    PagerAdapter 正确地移除 Item

    引子 很久没有写 UI 相关程序,感觉都生疏了。最近用 FragmentPagerAdapter,配合 TabLayout,感觉还不错。...我在项目中 adapter 实际继承自 FragmentPagerAdapter,修改之后我发现清空数据也好、移除页面也好,有了较为正常效果。...UI 被移除了,但生命周期还没有结束,如果需要的话,还是可以立马回来。...UI 当中 fragment,后者则还会保存 UI 已经销毁(调用 onDestroyView 之后)或者尚未初始化(尚未调用 onCreateView 之前) fragment。...用 detach 对于后续召回这个页面比较有用,这种情况出现概率也比较高,应该说绝大多数情况下使用 ViewPager 时,页面基本是固定,需要彻底 remove 情况较少。

    1.6K20

    Fragment新功能,setMaxLifecycle了解一下

    前言 看了一篇关于ViewPager2软文,我发现最新Fragment代码淘汰了setUserVisibleHint方法,转而支持用setMaxLifecycle方法,setMaxLifecycle...,但是逻辑基本是一致; INITIALIZING 初始状态 CREATED 已创建状态 ACTIVITY_CREATED 完全创建,但是没有started STARTED 创建并启动,可见不可操作...,替换掉了老旧setUserVisibleHint方法,所以在FragmentPagerAdapter中也进行了适配 FragmentPagerAdapter public static final...因为这里本质是add+Lifecycle.State.STARTED和attach+Lifecycle.State.STARTED组合; 最终结果是不可见Fragment只会走到生命周期onStart...BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT模式,在FragmentonResume里判断,更符合显示逻辑; 切换到BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT模式,需要调用俩参数构造方法

    2.7K40

    精选Android中高级高频面试题:四大组件及Fragment原理

    正在被启动,此时Activity可见但不在前台,还处于后台,无法与用户交互; onResume():表示Activity获得焦点,此时Activity可见且在前台并开始活动,这是与onStart区别所在...这是Activity生命周期中最后一个回调,常做回收工作、资源释放; 延伸:整个生命周期来看,onCreate和onDestroy是配对,分别标识着Activity创建和销毁,并且只可能有一次调用...; Activity是否可见来说,onStart和onStop是配对,这两个方法可能被调用多次; Activity是否在前台来说,onResume和onPause是配对,这两个方法可能被调用多次...setContentView实际调用 getWindow().setContentView将View设置到PhoneWindow,而PhoneWindow内部是通过 WindowManager...,其返回情况与START_STICKY类似,但不同是系统会保留最后一次传入onStartCommand方法中Intent再次保留下来并再次传入到重新创建ServiceonStartCommand

    1.9K00

    Carson带你学Android:ViewPage最详细使用教程

    mListViews.get(position); } @Override public int getCount() { return mListViews.size();//返回页卡数量...@Override public Fragment getItem(int arg0) { return list.get(arg0); }//根据Item位置返回对应位置Fragment...(可选,用了之后要重写它回调方法处理页面切换时候事务) FragmentPagerAdapter: vp.addOnPageChangeListener(this);//设置页面切换时监听器(可选...基类,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter 异 FragmentPagerAdapter使用时,每一个生成 Fragment...都将保存在内存之中,而 FragmentStatePagerAdapter 只保留了当前显示Fragment,其他划过Fragment离开视线,就会被销毁;而在页面需要显示时,再生成新实例。

    59710

    Android开发之ViewPager+Fragment

    关联上面的Fragment和ViewPager, FragmentPagerAdapter (android.support.v4.app.FragmentPagerAdapter) 继承自 PagerAdapter...我们只需要实现 getCount() 和 getItem()即可,getItem()可以看出,它返回是v4Fragment,所以2中问题答案就在这里了~~ pager.setAdapter(new...FragmentStatePagerAdapter 和 FragmentPagerAdapter 区别: FragmentPagerAdapter使用时,每一个生成 Fragment 都将保存在内存之中...,而 FragmentStatePagerAdapter 只保留了当前显示Fragment,其他划过Fragment离开视线,就会被销毁;而在页面需要显示时,再生成新实例(可以通过打印Fragment...这么实现好处就是当拥有大量页面时,不必在内存中占用大量内存。

    71850

    2020年Android初级面试题一年汇总出炉,吃透它!

    区别 wait是Object方法,wait是对象锁,锁定方法不让继续执行,当执行notify方法就会继续执行,sleep 是Thread方法,sleep 是使线程睡眠,让出cpu,结束自动继续执行...; WebView网页过多造成内存泄露; 资源关闭造成泄露,例如数据库使用完之后关闭连接。...12.RecyclerView和ListView区别 缓存:前者缓存是View+ViewHolder+flag,不用每次调用findViewById,后者则只是缓存View。...正在被启动,此时 Activity 可见但不在前台,还处于后台,无法与用户交互; onResume(): 表示 Activity 获得焦点,此时 Activity 可见且在前台并开始活动,这是与 onStart...FragmentPagerAdapter 每个 Fragment 会持久保存在FragmentManager 中,只要用户可以返回到页面中,它都不会被销毁。

    1.3K30
    领券