当前位置: 首页 > 知识库问答 >
问题:

某些设备上的GetSharedReferences空指针异常

卢鸿博
2023-03-14

我正在使用SharedReferences获取一些保存的值。我只在某些设备上收到空指针异常。当我在自己的设备上测试代码时,我没有遇到任何问题。但我的一些用户却犯了错误。

下面是我的课程,以了解SharedReference的价值:

public class SavingData {
     public static final String PREFS_NAME = "MyPrefsFile";
     public static MainActivity mainActivity;

public static int getRestTime() {
    // Restore preferences
    SharedPreferences settings = mainActivity.getSharedPreferences(PREFS_NAME, 0);
    int restTime = settings.getInt("resttime", defaultRestTime); // 0 is the default
                                                        // value
    return restTime;
}

在我的主类中,我声明mainActivity变量。

  SavingData.mainActivity = this;

以下是我得到的错误:

java.lang.运行时异常:无法启动活动
ComponentInfo{com.playsimple.fitnessapp/com.playsimple.fitnessapp.ExerciseStartActivity}:java.lang.NullPointerExctive在android.app.ActivityThread.perform启动活动(ActivityThread.java:2198)在android.app.ActivityThread.handle启动活动(ActivityThread.java:2257)在android.app.ActivityThread.access800美元(ActivityThread.java:139)在android.app.ActivityThread$H. handleMessage(ActivityThread.java:1210)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:136)在android. app。ActivityThread. main(ActivityThread. java: 5086)在java. lang. reect。方法。调用本机(本机方法)在java. lang. reect。方法。调用(方法。java: 515)在com. android. interal. os。ZygoteInit$MEodAndArgsCaller. run(ZygoteInit. java: 785)在com. android. interal. os。ZygoteInit. main(ZygoteInit. java: 601)在dalvik. system。本机方法)由:java. lang。NullPointerExctive在com. playsimple. fitnessapp. data。SavingData. get难度(SavingData. java: 91)在com. playsimple. fitnessapp。练习开始活动。init练习(练习开始活动。java: 69)在com. play在dalvik. system. nativeStartActivity. onCreed(ZygoteInit. java:889)在com. android. interal. os. ZygoteInit. main(ZygoteInit. java:647)在dalvik. system. NativeStart. main(本机方法)引起的:java. lang. NullPointerExctive在com. playsimple. fitnessapp. data. SavingData. get困难(SavingData. java:91)在com. playsimple. fitnessapp.运动量开始活动. init运动量(运动量开始活动. java:69)在android. app. Instrumentation. Call ActivityOnCreate(

共有2个答案

武骁
2023-03-14

尝试从其他活动中调用您的SharedReference作为,

SharedPreferences settings = mainActivity.getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
郎思远
2023-03-14

您正在此处创建主要活动的实例:

public static MainActivity mainActivity;

然后调用共享pref。。用这个。从主活动中获取上下文对象,然后调用它。也可以使用这个包括MODE_PRIVATE参数:

SharedPreferences userDetails = context.getSharedPreferences("userdetails", MODE_PRIVATE);

看看这个详细的答案。另请参见文档中的[Context GetSharedReferences](http://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String,int))

 类似资料:
  • 问题内容: 我在登录模式提交按钮的单击侦听器中遇到问题。 这是错误。 我对什么是空指针异常有一个合理的了解,并且已经彻底搜索了一个类似于我的问题。我试图以几种方式重新格式化点击侦听器,确保我具有正确的视图ID等。 显然,还有更多但与我认为无关的话题。这是带有按钮的对话框的XML文件。 任何帮助将不胜感激。 问题答案: 是因为它不属于 当你调用内部的,它要寻找一个你的活动的布局中。 试试这个代替:

  • 这里是错误发生的地方 当调用setString时,psClaims此时不为空。

  • 我的Android应用程序无法安装在一些“随机”、较旧的API设备上(任何低于API级别25的设备),错误如下: 所以,基本上看起来… API 我见过类似的问题,答案与小写的包名有关。我已经有了。 有人有什么想法吗? 舱单: BTW我用的是Visual Studio 2019和一夫一妻制3.7

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 最近,我们在Android应用程序中增加了对Chromecast的支持,但在对各种移动设备(手机和平板电脑)的扩展测试中,发现在许多移动设备上,Flipps应用程序都没有发现Chromecast。在相同的设备上,我们使用了最新版本的官方Chromecast SDK演示应用程序进行测试,该应用程序从https://github.com/googlecast/castvideo-Android下载(主