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

当我调用翻译R.string时,在FragmentPagerAdapter中会出现一个奇怪的数字

在Android开发中,FragmentPagerAdapter 是一个用于管理多个 Fragment 的适配器,通常与 ViewPager 一起使用。当你调用 R.string 来获取字符串资源时,如果出现奇怪的数字,可能是由于以下几个原因:

基础概念

  • R.string: 这是Android资源文件中的一个引用,指向 res/values/strings.xml 文件中定义的字符串资源。
  • FragmentPagerAdapter: 这是一个适配器,用于在 ViewPager 中管理多个 Fragment

可能的原因及解决方法

  1. 资源ID混淆:
    • 原因: 在构建过程中,资源ID可能被混淆或错误地分配。
    • 解决方法: 确保你的 build.gradle 文件中没有启用混淆(ProGuard)或者混淆规则没有错误地影响到字符串资源。
  • 缓存问题:
    • 原因: 可能是由于旧的构建缓存导致的问题。
    • 解决方法: 清理项目缓存并重新构建项目。可以通过点击Android Studio中的 Build > Clean ProjectBuild > Rebuild Project 来完成。
  • 字符串资源未找到:
    • 原因: 可能是由于引用的字符串资源名称错误或者在 strings.xml 中未定义。
    • 解决方法: 检查 strings.xml 文件,确保字符串资源存在且名称拼写正确。
  • Fragment生命周期问题:
    • 原因: 在 FragmentPagerAdapter 中,Fragment 的生命周期可能与预期不符,导致在获取资源时出现问题。
    • 解决方法: 确保在 Fragment 的正确生命周期方法中获取资源,例如在 onCreateViewonActivityCreated 中。

示例代码

假设你在 FragmentPagerAdapter 中的一个 Fragment 里获取字符串资源:

代码语言:txt
复制
public class MyFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_my, container, false);
        
        // 正确获取字符串资源
        String myString = getString(R.string.my_string);
        
        // 使用字符串资源
        TextView textView = view.findViewById(R.id.textView);
        textView.setText(myString);
        
        return view;
    }
}

应用场景

  • ViewPager 中使用多个 Fragment 并且每个 Fragment 需要显示不同的字符串资源时。
  • 当需要在 Fragment 中动态获取和显示本地化字符串时。

总结

如果你在 FragmentPagerAdapter 中调用 R.string 时遇到奇怪的数字,首先检查资源ID是否正确,然后清理项目缓存并重新构建。确保字符串资源在 strings.xml 中定义正确,并且在 Fragment 的适当生命周期方法中获取资源。如果问题仍然存在,可能需要进一步检查项目的构建配置和 Fragment 的生命周期管理。

相关搜索:当我尝试绘制一个矩形时,ggplot出现了奇怪的问题在Pandas DataFrame中除以两个数字时出现奇怪的错误当我试图在我的angular前端调用_id参数时出现错误我在使用"color:“时出现了一个奇怪的错误:在C中从字符串中提取数字时出现奇怪的错误当我在Keras中传递参数时,函数的一个非常奇怪的行为当我尝试在R上安装一些软件包时出现奇怪的问题swift 3在调用AFNetworking的post()时,函数参数出现了一个非常奇怪的问题在一个模板中的多个地方调用同一段代码时出现奇怪的问题当我尝试运行代码时,在vscode中得到一个奇怪的错误当我在onResponse中调用一个对象时,发布构建时的NullpointerException当我插入一个超出范围的数字时,为什么我的警告框不出现?在python中一次填充一个矩阵数组时出现奇怪的结果当我尝试从stdin中读取几个中间有空格的字符串时,为什么在Python中会出现错误?当我的Apollo订阅在React中被触发时,我如何调用一个函数?当我在Windows上的Jupyter笔记本中从Dash调用app时出现404错误将Ajax调用封装到一个类中,当我使用它上传文件时,它的工作方式很奇怪当我在一个特定的物理位置执行代码时,出现了一个错误(sounddevice library)当我更新self变量时,出现了一个奇怪的结果(因为我是python新手)。为什么会发生这种情况?当我在快速排序算法的递归调用中包含透视图时,为什么会出现堆栈溢出?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android之FragmentPagerAdapter和FragmentStatePagerAdapter

image.png FragmentPagerAdapter FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配器,继承自PagerAdapter...,是专门用来给支持包中出现的ViewPager进行数据适配的。...FragmentPagerAdapter拥有自己的缓存策略,当和ViewPager配合使用的时候,会缓存当前Fragment以及左边一个、右边一个,一共三个Fragment对象。...FragmentPagerAdapter会对我们浏览过Fragment进行缓存,保存这些界面的临时状态,这样当我们左右滑动的时候,界面切换更加的流畅。但是,这样也会增加程序占用的内存。...该 PagerAdapter 的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。

2K20

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

之前做业务的时候遇到一个问题,ViewPage在第二次setAdapter的如果用的是FragmentPager并不会导致页面刷新,但是采用FragementStatePagerAdapter却会刷新?...的FragmentAdapter时不会立即刷新的效果,但是如果往后滑动几屏会发现其实是有效果了?...为什么呢,因为第二次setAdapter的时候,已经被FragmentManager缓存的Fragent不会被新建,也不会被刷新,因为FragmentPagerAdapter在调用destroy的时候,...FragmentPagerAdapter如何通过notifyDataSetChanged刷新ViewPager FragmentPagerAdapter中的数据发生改变时,往往要重新将数据设置到Fragment...FragmentManager对于Fragment的操作是分批量进行的,在一个Transaction中有多个add、remove、attach操作,Android是有返回键的,为了支持点击返回键恢复上一个场景的操作

3.3K20
  • 妖怪般的VerifyError | 奇形怪状的bug

    java.lang.VerifyError 是说 JVM 在加载一个类时,会去校验类的正确性,只有类文件不合法才会报这个Error,这个异常发生在类的加载过程中。 这个问题发生在类的生命周期的过程中。...因为升级了fragment的版本到1.4.3,对于基础的fragment构造增加了一个有参的构造函数,之后导致了这个奇怪的问题。 在线上灰度的期间,我们发现了4.4的设备有这么个奇怪的crash异常。...而之后简单的分析了下异常,猜测dialogfragment的类本身就出现了问题,所以导致了在类加载的时候,验证字节码安全性失败。但是这部分可是androidx内部的代码啊,这不就是不讲武德吗?... (I)V 从描述上来看,就是构造函数内调用的是当前类的,并没有调用父类的构造。所以导致了这部分是一个异常的字节码。...而在新版本的androidx中,则给Fragment添加了另外一个有参的构造函数,所以这部分就出现了异常。

    1K40

    ViewPager与Fragment那些事儿

    2.notifyDataSetChange方法在viewPager中不起作用的问题的解决方案。 3.通过修改FragmentPagerAdapter,避免Fragment被过度持有。...当触发网络搜索有回包之后,会出现上方的tabHost。下方内容区域展示可滑动。tabHost可点击。...当我传入一个>0的数,会走到这里的逻辑,也就是简单的进行赋值操作。 ? 随后会调用sort方法进行排序,并走进这里的判断,辗转调用到populate方法。 ?...在populate方法中,如果当前位置的item找不到,则会调用addNewItem方法,其中会调用adapter的instantiateItem方法,来重新”生成”一个Fragment。 ?...2.Fragment自动预加载问题: 在查看DatasetChange的代码时,发现一个很有意思的方法和常量 ?

    92980

    APP启动引导页的制作,用ViewPager实现翻页动画

    ---- 1.SharedPreferences##### SharedPreferences是一种Android提供的,简易的用于在手机上永久化保存数据的类,这个轻量级的类在保存数据时,使用常见的...Context 类中的 getSharedPreferences()方法,此方法传入的两个参数: 第一个参数用于指定 SharedPreferences 文件的名称,如果 指 定 的 文 件 不 存 在...; //调用调用 commit()方法将添加的数据立即提交,不过AS推荐使用apply(),区别请看下方网址 http://blog.csdn.net/s04103037/article...自定义一个继承自FragmentPagerAdapter的Adaper类用于管理Fragment,另一个FragmentStatePagerAdapter也是同样用于Fragment,但跟前者效果不同,...此处position会依次出现0,1,2,3等整型数字。 基本上就这样~看看效果 ? -完-

    1.9K10

    Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

    并命名其为“Fragment最佳实践”,作为想到单独使用Fragment的用户来说,这个说法并不夸大,它解决了许多用户在使用Fragment时产生的这样那样可见或不可见的问题。...先说了一下PagerAdapter的作用,是一个基类提供适配器给ViewPager中的页面,如果你想使用特定的实现类,那么你可以看两个类FragmentPagerAdapter和FragmentStatePagerAdapter...当我们传入的limit时,limit还是被设置为1,当limit与成员变量mOffscreenPageLimit的值不同时(成员变量mOffscreenPageLimit的默认值为1),更新成员变量...在本例中,也是我们在显示TAB1的时候,ViewPager已经加载了TAB2,具体方式是通过instantiateItem方法,该方法内部调用了我们重写的getItem方法,TAB2所表示的Fragment...在Fragment可见时,即ViewPager中滑动到当前页面时,因为已经预加载过了,之前生命周期已经走到onResume() ,所以现在只会回调:setUserVisibleHint()。

    1.8K10

    专业的CopyTranslator.

    不知道大家有没有苦恼于翻译各种英文文档,我一般是谷歌,有道.两个混用,谷歌是接口没有限制,一天3k调用好像没有问题(我也不记得多少了),但是没有一个实体的软件....https://translate.google.cn/ 官网地址,你说奇怪不奇怪,唯一没有被封的404小厂应用 打开以后在按照我的图中点,会在桌面生成一个快捷方式,假装有应用了,嘻嘻 是不是有点意思...,以下抄至官网: 起源 痛点 由于论文通常以pdf的形式出现,而双栏的pdf(单栏的也可能出现类似现象)在复制的时候又会出现回车(换行)的现象,这使得我们的复制到各种翻译网页后翻译的效果很差,需要我们手动删除换行...同类产品 虽然现有词霸,词典等工具对于pdf的翻译效果不错,但是在翻译整篇论文的时候,它们存在以下缺点 翻译完后要复制翻译结果较为繁琐,一两句可能还行,但是当我们要翻译整篇文章时,重复性的移动鼠标点选复制也会令人疲倦...有些翻译软件在复制翻译结果时同时复制了原文,而我只需要译文,黏贴完后还需要手动删除原文部分,较为繁琐。

    95720

    android FragmentpagerAdapter和FragmentStatePagerAdapter的区别

    且,由于 FragmentPagerAdapter.instantiateItem() 的实现中,调用了一个新增的虚函数 getItem(),因此,我们还至少需要实现一个 getItem()。...getItem() 该类中新增的一个虚函数。函数的目的为生成新的 Fragment 对象。重载该函数时需要注意这一点。在需要时,该函数将被 instantiateItem() 所调用。...这也是为什么很多人发现调用 PagerAdapter.notifyDataSetChanged() 后,getItem() 没有被调用的一个原因。...在我们继承的子类中,重载该函数,并调用 FragmentPagerAdapter.instantiateItem() 取得该函数返回 Fragment 对象,然后,我们该 Fragment 对象中对应的方法...这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。 getItem() 一个该类中新增的虚函数。 函数的目的为生成新的 Fragment 对象。

    1K90

    FragmentPagerAdapter 滑动过后界面不显示的解决方案

    立马在getItem代码中打断点,发现左右滑动时压根就没有调用getItem方法....结合其他google结果,大致意为FragmentPagerAdapter中所创建出来的fragment会被fragment manager保存,也即在内存中....实际运行时,滑动时会直接去内存中寻找.这样问题就可以断定为fragment再次添加到界面时数据丢失了,没有保存下来.这样就好办了,我们在frament中做数据保存处理即可.在fragment中加入类似代码....果然已有现成的解决方案.在此感谢泡在网上的日子的解决方案,我就不赘述了....结论:FragmentPagerAdapter和viewpager滑动白屏无数据,是由于恢复内存中的fragment的数据丢失,需要自己做手动数据保存,这样才能避免此情况的出现.

    1.2K30

    ViewPager 获取当前显示的Fragment

    情况下 才好使; FragmentPagerAdapter 有一个特点 凡是加载过的Fragment 都会被保留,既然Fragment不会被销毁,那我们就可以使用findFragmentByTag()...方法找到它;但问题是动态创建的话 tag的设置;我们知道动态加载时是可以设置tag的,但是动态创建就没法设置了;如果viewpager使用的是适配器是 FragmentPagerAdapter 的话...:"+pager.getId()+":"+pager.getCurrentItem()); ---- 重写适配器的 setPrimaryItem()方法 ; 这个方法在每次viewpager滑动后都会被调用...而 object参数就是显示的Fragment ;可以在适配器中定义个变量 currentFragment 每次改变时都会获取到显示的Fragment @Override public void setPrimaryItem...setPrimaryItem()是在 viewpager的滑动监听执行完后才会调用的;所以在 换的个滑动监听中获取当前显示的Fragment 是不对的

    3.7K80

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

    在support v13和support v4中都提供了FragmentPagerAdapter和FragmentStatePagerAdapter,区别在于:support v13中使用android.app.Fragment...懒加载 懒加载主要用于ViewPager且每页是Fragment的情况,场景为微信主界面,底部有4个tab,当滑到另一个tab时,先显示”正在加载”,过一会才会显示正常界面。...变为不可见时,会调用setUserVisibleHint(false),且该方法调用时机: onAttach()之前,调用setUserVisibleHint(false)。...界面变为可见时,调用setUserVisibleHint(true)。 界面变为不可见时,调用setUserVisibleHint(false)。...因为setUserVisibleHint(true)在界面可见时都会调用,如果滑到该界面做过数据加载后,滑走,再滑回来,还是会调用setUserVisibleHint(true),此时由于mIsInited

    2K00

    PagerAdapter 正确地移除 Item

    所以我们在实现 PagerAdapter 的 getItemPosition 时很自然的想到这么写: override fun getItemPosition(item : Any?)...PagerAdapter 的 getItemId 方法 解决了一个问题,只是一个解决问题的开始罢了。...我在项目中的 adapter 实际上继承自 FragmentPagerAdapter,修改之后我发现清空数据也好、移除页面也好,有了较为正常的效果。...UI 当中的 fragment,后者则还会保存 UI 已经销毁(调用 onDestroyView 之后)或者尚未初始化(尚未调用 onCreateView 之前)的 fragment。...用 detach 对于后续召回这个页面比较有用,这种情况出现的概率也比较高,应该说绝大多数情况下使用 ViewPager 时,页面基本上是固定的,需要彻底 remove 的情况较少。

    1.6K20

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

    当我们的Activity上弹出Dialog对话框时,程序的生命周期依然是onCreate() —> onStart() —> onResume(),在弹出Dialog的时候并没有onPause()和onStop...当我们在A中激活B时,A调用onPause()方法,此时B出现在屏幕时,B调用onCreate()、onStart()、onResume()。...如果重写了FragmentPagerAdapter的DestroyItem方法,并且相关的Fragment已经加载过: 相互切换时只会调用setUserVisibleHint Fragment...当一个Service被终止时,Service的onDestroy()方法将会被调用,在这里应当做一些清除工作,如停止在Service中创建并运行的线程等。...在并发很多用户时cookie是一个很好的选择】。 HTTPS协议: 基本概念:对工作在以加密连接(SSL / TLS)上的常规HTTP协议。

    1.1K20

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

    类,是一个容器,需要在里面添加我们想要显示的内容。...在MainActivity加载要显示的页卡: 当需要加载的页卡是View时: LayoutInflater lf = getLayoutInflater().from(this); view1 =...数据源:List 写一个继承相应Adapter的类,然后根据需求重写方法,有几个方法是必须重写的 当页卡是View时:用ViewPagerAdapter: public class MyViewPagerAdapter...(可选,用了之后要重写它的回调方法处理页面切换时候的事务) FragmentPagerAdapter: vp.addOnPageChangeListener(this);//设置页面切换时的监听器(可选...的基类,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter 异 FragmentPagerAdapter使用时,每一个生成的 Fragment

    60910

    Android开发:ViewPage最详细教程

    在使用这个类之前,必须明白: 1.ViewPager类直接继承了ViewGroup类,和LinearLayout等布局一样,都是一个容器,需要在里面添加我们想要显示的内容。...FragmentStatePagerAdapter 数据源:List 写一个继承相应Adapter的类,然后根据需求重写方法,有几个方法是必须重写的 当页卡是View时:用ViewPagerAdapter...(可选,用了之后要重写它的回调方法处理页面切换时候的事务) FragmentPagerAdapter: vp.addOnPageChangeListener(this);//设置页面切换时的监听器(可选...使用时,每一个生成的 Fragment 都将保存在内存之中,而 FragmentStatePagerAdapter 只保留了当前显示的Fragment,其他划过的Fragment离开视线后,就会被销毁;...而在页面需要显示时,再生成新的实例。

    3K41

    PHP 7.4 有哪些新特性

    PHP 7.4 的主要特性包括以下几个, 短闭包函数(short closure) 预加载提交性能 属性类型限定 Improved type variance(不会翻译) 三元运算简写 数组展开运算 新增类的魔术方法...:serialization 数字分隔符 运算优先顺序 允许在__toString中抛出异常 支持反射引用 新增字节分割函数 移除php短标签 弃用左关联运算符 不再向后兼容的变更 短闭包函数 短闭包函数可以减少冗余代码...预加载在框架启动时在内存中加载文件,而且在后续请求中永久有效。 缺点:性能的提升会在其他方面花费很大的代价,每次预加载的文件发生改变时,框架需要重新启动。...=会继续保留 弃用左关联运算符 PHP遗留了一些奇怪的怪癖,比如 1 ? 2 : 3 ? 4 : 5; // 将会在 PHP 7.4 中废弃,在 PHP 8中会抛出编译错误 (1 ?...openssl_random_pseudo_bytes 会在调用错误时抛出异常 序列化PDO和PDOStatement 实例将会生成一个Exception而不是PDOException异常 调用get_object_vars

    1.1K10

    Android - 懒加载

    那么我们要做的就是禁止ViewPager预加载或者提供一个只在Fragemnt可见的情况下,才去进行耗时操作的方法,只要Fragmeng可见我们就执行该方法。...+ onDestroyView 本次要用到的非生命周期的方法是:setUserVisibleHint 简单介绍一下此方法:当fragment被用户可见时,setUserVisibleHint()会调用且传入...当然我测试用的是FragmentPagerAdapter,我们先看一看正常滑动,Fragment生命周期是怎么走的,先写一个BaseLazyLoadFragment类继承自Fragment.重写我们刚才说的生命周期的方法...image.png 也就是我们还需要一个第一个子Fragment的状态信息:解决思路如下: 由于父Fragment的执行在子Fragment之前,所以,当我们在父 Fragment 分发完成自己的可见事件后...image.png `` 最后附上总代码,编写Fragment时,只需要继承该类,然后调用可见的方法就好了。

    1.2K20

    和各种诡异 Bug 打交道 13 年,我总结了 18 条经验

    例如,如果信令信息接收得过早,在配置和启动程序完成之前接收,许多奇怪的行为就会发生。另一个例子,当一个连接在被放入空闲列表之前就被标记为断开。...即使If语句在概念上很简单,当它有多个条件需要追踪时,很容易出错。最近我尝试重新把代码写得简洁,避免出现复杂的If语句。 5....没有使用这些组合来测试是 bug 悄然出现的头号原因,我在测试时是原本可以发现这些 bug 的。 9. 添加和删除 新功能常常需要能够为系统添加新配置,比如说用于电话号码翻译的新配置文件。...例如,当我处理面向 VoIP 的 SIP 协议时,我写了一个小的脚本可以返回正标题和值。这个工具使得测试许多个别场景变得简单。另一个例子是可以调用 API 的命令行工具。...有一次,我在一种情况下,我对处理关联号码做了改变,包括两部分:路由地址前缀(总是相同),和从000到999的动态分配号码。问题是,当查找相关性时,动态分配的数字的第一个数字在查找之前被错误地删除。

    90980

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

    使用 setMaxLifecycle 进行懒加载 FragmentPagerAdapter 的构造方法新增了一个 behavior 参数, 当被设置为FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT...时,会通过setMaxLifecycle 来限制 Fragment 的生命周期:只有当 Fragment 显示在屏幕中时才执行onResume()。...在创建 Fragment后,根据 behavior 调用了setMaxLifecycle。...Adapter中构建 Framgent时直接调用setMaxLifecycle 也是等价的。...从架构基础开始,分了8个模块来逐步从基础进阶到架构师的环节: 多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流

    97760
    领券