- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SharedPreferences 来获取一些保存的值。我只在某些设备上得到空指针异常。当我在自己的设备中测试代码时,我没有遇到任何问题。但是我的一些用户收到了错误。
这是我获取 SharedPreference 值的类:
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.RuntimeException: Unable to start activity
ComponentInfo{com.playsimple.fitnessapp/com.playsimple.fitnessapp.ExerciseStartActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) at android.app.ActivityThread.access$800(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.playsimple.fitnessapp.data.SavingData.getDifficulty(SavingData.java:91) at com.playsimple.fitnessapp.ExerciseStartActivity.initExercise(ExerciseStartActivity.java:69) at com.playsimple.fitnessapp.ExerciseStartActivity.onCreate(ExerciseStartActivity.java:64) at android.app.Activity.performCreate(Activity.java:5248) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) ComponentInfo{com.playsimple.fitnessapp/com.playsimple.fitnessapp.ExerciseStartActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3683) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.playsimple.fitnessapp.data.SavingData.getDifficulty(SavingData.java:91) at com.playsimple.fitnessapp.ExerciseStartActivity.initExercise(ExerciseStartActivity.java:69) at com.playsimple.fitnessapp.ExerciseStartActivity.onCreate(ExerciseStartActivity.java:64) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
最佳答案
您正在此处创建主要 Activity 的实例:
public static MainActivity mainActivity;
然后调用共享的 Prefs.. 使用它。从您的主要 Activity 中获取上下文对象,然后调用它。还使用这个包括 MODE_PRIVATE 参数:
SharedPreferences userDetails = context.getSharedPreferences("userdetails", MODE_PRIVATE);
参见 this detailed answer .另请参阅 [Context getSharedPreferences]( http://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String , int) )
的文档关于java - 某些设备上的 getSharedPreferences 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893971/
我已经构建了 2 个项目,我的主要项目和一个 Twitter 发布项目。我已经将 twitter 导入到 main 中,现在正在尝试将其连接起来。下面是导入代码。问题是我知道我遗漏了一些可能与上下文有
我是 Android Studio 的新手,所以遇到抽象方法 getSharedPreferences()。 我开始怀疑我所了解的抽象方法是否属实。所以基本上。 我阅读了 Android 开发者网站上
基本上,我的服务会显示一条通知,如果用户愿意,可以将其关闭。 该设置由应用程序内部控制,并通过 PreferenceActivity 进行设置。 退出 Activity 时: public void
我正在使用 SharedPreferences 来获取一些保存的值。我只在某些设备上得到空指针异常。当我在自己的设备中测试代码时,我没有遇到任何问题。但是我的一些用户收到了错误。 这是我获取 Shar
只要“new score”大于oldscore,我就会尝试保存一个新值(按钮的点击次数)。使用 TextView 我会在用户点击按钮时显示点击次数,当时间结束时我想用另一个 TextView 显示分数
public static void GetAllPoints(final IGetAllPointsCallBack callBack) { SharedPreferences ent
你好,我有 getSharedPreferences 无法解决,我搜索了很多答案,但任何解决这个问题的方法。如何实现onclick iside ViewHolder中的getSharedPrefere
我是 Java 和 Android 开发的初学者,对首选项有疑问。 一个教程要求我使用首选项来读取和保存调用 onCreate 方法的时间。 我已经解决这个问题至少两天了,但一无所获。谁能举例说明如何
我在从非 Activity 类读取 getSharedPreferences 以在播放器中设置播放列表时遇到问题...在我的 Activity 中,我从 edittext 中获取字符串变量以获取文件夹
我的类(class)是用 Kotlin 编写的,这是我的 SharedPreferenceHandler class SharedPreferenceHandler(sharedPrefs: S
我有一个扩展AppCompatActivity的登录类,但是当我想检查我的数据并使用getSharedPreferences()时,它出现运行时错误并且将强制停止!我该怎么办? 这是我的代码: pac
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我需要访问 updateBaseContextLocale 上的 SharedPreferences,它在 onCreate 之前运行。当我从 updateBaseContextLocale 调用 S
这可能是 Android 101,但我现在已经习惯了 SDK。无论如何,我根本不明白这个错误。我想根据我的共享首选项文件更新一些复选框选择,我使用以下方法: private void updatePr
我有一个扩展 SurfaceView 的 GamePanel 类,所以我不能为 SharedPreferences 扩展 Activity。如何在不扩展类的情况下使用 getSharedPrefere
在我的应用程序中,我需要根据用户存储在 SharedPreference 变量中的值声明一个数组。问题是数组需要在静态 block 中声明,因为在我的类中调用 onCreate() 之前需要声明数组的
用这些行: String app_name = "@string/app_name"; SharedPreferences sharedPreferences = getSharedPreferenc
我正在尝试使用对话框中的首选项,但遇到了一些困难。我的应用程序的其余部分只使用 getPreferences() 对话框,似乎没有任何问题。但是,Dialog 不能调用 getPreferences(
请帮帮我。我不知道这段代码有什么问题: import android.appwidget.AppWidgetProvider; import android.content.SharedPrefere
我已经实现了从安装在网络上的服务中检索数据的内容提供程序。内容提供者从共享首选项(用户凭据、应用程序名称等)中获取所需参数 SharedPreferences settings = getContex
我是一名优秀的程序员,十分优秀!