Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的sharedPreference总是返回默认值

我的sharedPreference总是返回默认值
EN

Stack Overflow用户
提问于 2021-01-14 13:46:13
回答 1查看 64关注 0票数 0

我知道这个问题被问了很多次,很抱歉重复了一遍,但我就是不知道该怎么办。

我正在使用Glide将图像从服务器加载到我的RecycleView和它的侦听器中,所以当我的图像被加载时,它应该保存int 1,然后在我的片段中,我的RecycleView在哪里,我正在获取SharedPreferences int并检查它是否不是1,然后我的RecycleView xml转到不可见/消失,最后我检查我的一些RecycleView是否消失了/不可见我的所有布局都应该消失了,这样我的布局就会在所有图像加载后加载。

但问题是,我的SharedPreference中的默认值总是被触发的,我不知道为什么...我也尝试过PreferenceManager.getDefaultSharedPreferences(),但没有什么不同。

我的适配器滑动:

代码语言:javascript
运行
AI代码解释
复制
Glide.with(context)
     .load(listaSvihMembersa.get(i).getImageUrl())
     .circleCrop()
     .placeholder(R.drawable.ic_joint)
     .listener(new RequestListener<Drawable>() {
         @Override
         public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
             return false;
         }

         @Override
         public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
             SharedPreferences sp = context.getSharedPreferences("mortgage", MODE_PRIVATE);
             sp.edit().putInt("motgageList", 1).apply();
             return true;
        }})
        .into(binding.detailedListIMG);
   }

和我获取SharedPref的片段

代码语言:javascript
运行
AI代码解释
复制
 private void setMortgageRecycleView(List<MortgageLiabilities> mortgageLiabilitiesList) {
    mortgageRecycleView = binding.rvMortgageList;
    mortgageRecycleView.animate().translationY(0);

    MortgageAdapter adapter = new MortgageAdapter(mortgageLiabilitiesList, context, this, listaSvihMembersa,mortgageRecycleView);
    mortgageRecycleView.setAdapter(adapter);
    SharedPreferences sp = context.getSharedPreferences("mortgage",MODE_PRIVATE);
    int idNmbr = sp.getInt("motgageList", 0);
    if (idNmbr != 1){
        mortgageRecycleView.setVisibility(View.INVISIBLE);
        Log.i(TAG, "visibility motgageListe: " + mortgageRecycleView.getVisibility());
    }
    else {
        mortgageRecycleView.setVisibility(View.VISIBLE);
        Log.i(TAG, "visibility motgageListe: " + mortgageRecycleView.getVisibility());
    }
    mortgageRecycleView.setLayoutManager(new LinearLayoutManager(context));
    mortgageRecycleView.setHasFixedSize(true);
}

这里,我检查是否有任何Recycleviews是不可见的:

代码语言:javascript
运行
AI代码解释
复制
 if (mortgageRecycleView.getVisibility() == View.INVISIBLE || loansRecycleViews.getVisibility() == View.INVISIBLE
                    || otherRecycleView.getVisibility() == View.INVISIBLE || creditCardRecycleView.getVisibility() == View.INVISIBLE){
     binding.constraintLayout.setVisibility(View.GONE);
     Toast.makeText(context, "Ne moze da ucita,root view je GONE", Toast.LENGTH_SHORT).show();
 }

编辑:我的shared_pref.xml文件

代码语言:javascript
运行
AI代码解释
复制
<map>
    <int name="motgageList" value="1" />
</map>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-14 14:24:38

Glide正在执行一个异步任务,所以在大多数情况下,你的代码会在回调onResourceReady被调用之前到达int idNmbr = sp.getInt("motgageList", 0);

共享首选项在这里不是一个好的选择,您可以使用自定义回调并将其传递给您的适配器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65720185

复制
相关文章
我都服了,为啥上游接口返回的汉字总是乱码?
想必大家编写代码时肯定和我一样,也遇到过汉字乱码的问题。特别是,有时候和上下游对接接口,不能统一编码格式的话,一堆乱码问题,让人头皮发麻。
烟雨星空
2021/09/14
1.7K0
我都服了,为啥上游接口返回的汉字总是乱码?
数组……Geez,我总是弄混
来来回回已经碰到这问题不知道多少次了,但每过一段时间总得把它弄混。郁闷啊。还是得记下来才行,不然每次都翻规范太痛苦了。
用户7886150
2020/12/12
7770
微信公众号msgSecCheck接口总是返回{
首先遇到报错{'errcode': 47001, 'errmsg': 'data format error rid: 60ac6d57-058e8ba0-3fa910cf'}
SingYi
2022/07/13
1.1K0
微信公众号msgSecCheck接口总是返回{
[android] sharedPreference入门
/********************2016年5月6日 更新**************************************/
唯一Chat
2019/09/10
4710
[android] sharedPreference入门
WordPress 内置的用于接口返回默认值的函数大全
在开发 WordPress 插件的时候,其中的一部分工作就是对接 WordPress 的 filter(过滤器),而 WordPress 很多 filter 其实是简单的开关型 filter,使用的时候可能只需要返回 false / true,还有一些只需要返回空的数据,比如 0,空字符或者空数组等。
Denis
2023/04/13
6130
SharedPreference 的commit和apply
SharedPreference是Android开发中经常用到的一个数据持久化类, 我们可以把一些需要持久化的数据放到一个指定的 Preference文件中,并持久化到磁盘上以xml形式存储起来。 这个xml文件对于开发者来说基本算是透明的,开发者只需要面对 Preference 所需要的文件名。
PhoenixZheng
2018/08/07
1.3K0
request.getHeader("X-Forwarded-For")总是返回127.0.0.1
使用场景:nginx+tomcat,nginx起反向代理作用,由于没有做以下配置,结果在tomcat部署的jia-web通过request.getHeader("X-Forwarded-For")总是返回127.0.0.1:
johnhuster的分享
2022/03/28
8410
application和sharedpreference的区别
在android程序中,我们经常用intent来传递数据,但是intent传递的数据类型太少了。因此我们经常通过以下两种方法来传递数据。
提莫队长
2019/02/21
5320
事务的 ACID 属性我总是傻傻分不清
对于大部分程序员来说,他们的任务就是把现实世界的业务场景映射到数据库世界。比如银行为了存储人们的账户信息会建立一个account表:
JiekeXu之路
2019/06/19
5030
请不要滥用SharedPreference
SharedPreference是Android上一种非常易用的轻量级存储方式,由于其API及其友好,得到了很多很多开发者的青睐。但是,SharedPreference并不是万能的,如果把它用在不合适的使用场景,那么将会带来灾难性的后果;本文将讲述一些SharedPreference的使用误区。
weishu
2018/09/05
1.5K0
请不要滥用SharedPreference
为何cytoscape总是说我没有java呢
因为最近自己购置了一个全新的Windows电脑,所以就系统性的配置了全部的生物信息学相关软件,当然是也包括cytoscape啦。但是遇到了报错,如下:
生信技能树
2020/07/30
2.3K0
为何cytoscape总是说我没有java呢
Android SharedPreference工具类
Android SharedPreferences工具类 新建一个SpUtil工具类 /** * Created by xpf on 2017/03/25 :) * Function: sp存储的工具类 */ public class SpUtil { private static final String SP= "sharedpreference"; private SpUtil() { } private static SpUtil instace = ne
程序员飞飞
2020/02/27
1.9K0
请不要滥用SharedPreference
SharedPreference是Android上一种非常易用的轻量级存储方式,由于其API及其友好,得到了很多很多开发者的青睐。但是,SharedPreference并不是万能的,如果把它用在不合适的使用场景,那么将会带来灾难性的后果;本文将讲述一些SharedPreference的使用误区。
weishu
2020/01/20
6040
请不要滥用SharedPreference
java删除文件时总是返回false,删不掉「建议收藏」
我的文件都是存在的,但是就是经常性的删不了,不知道怎么回事,我单独测试的时候是可以的,感觉很是奇怪,上网查,人家说是可能的情况有:
全栈程序员站长
2022/06/27
1.7K0
Android学习笔记(十三)SharedPreference必须掌握的基础
codingblock
2017/12/29
9170
Java删除文件时总是返回false,删不掉,且无异常
今天在利用 File 类中的 delete() 方法删除文件时总是返回 false 。查看路径文件路径正确,文件也存在。测试可以正常,唯独在项目中那是一个删不掉啊。后来与测试用例仔细比对了一下,发现有个 IO 类在使用,因此得出:在删除文件是因为没关闭 IO,导致文件无法删除,后来加上 close() 就可以删除文件了。
全栈程序员站长
2022/08/27
1.6K0
java直接读取.zip压缩文件ZipEntry.getsize()总是返回-1?
但是后面发现一个问题,读取的时候总是返回-1 ze.getSize()的值总是-1,可是名字都到了。 找不到法子,着实无奈,后面换了种方式,干脆将文件解压出来之后,在对文件里面的内容进行验证文件名和文件大小好了
软测小生
2019/07/05
3K0
java直接读取.zip压缩文件ZipEntry.getsize()总是返回-1?
安卓开发之再用SharedPreference
1、先获取对象 MySharePreference = getPreferences(Context.MODE_PRIVATE);//这里的模式自己查找 2、如果需要获取保存的内容可以使用 getXXX方法 MySharePreference.getString(“username”, “”);//第二个参数是默认值 3、如果想更改保存的内容可以使用 MySharePreference.Editor edit = MySharePreference.edit();//开始修改 edit.putSt
苦咖啡
2018/05/08
6120
Android 存储学习之使用SharedPreference保存文件
上两节我们都是使用文本文件保存用户的信息,这明显是存在漏洞的。同时对文件中的内容不好管理。今天我们学习用SharedPreference保存。sharedPreference是专门保存一些比较零散的数据的。
DragonKingZhu
2022/05/08
4740
Android 存储学习之使用SharedPreference保存文件
成员变量的默认值
int类型的默认值是0 String类型的默认值是null double类型的默认值是0.0d Integer类型的默认值是null Long类型的默认值是null long类型的默认值是0L float类型的默认值是0.0f char类型的默认值是\u0000 byte类型的默认值是(byte)0 short类型的默认值是(short)0
gfu
2019/09/18
2.7K0

相似问题

getIntExtra总是返回默认值

10

React总是返回默认值

17

getPreferences总是返回默认值

19

getFloatExtra()总是返回默认值

10

SharedPreference返回null颤动

126
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档