【发布时间】:2016-04-28 02:36:48
【问题描述】:
因此,无论我尝试在这里和那里调整我的代码多少次,我都会不断收到相同的错误。我将发布与错误有关的每一点代码。
我不会包含不必要的代码,所以如果我的代码看起来不完整,那是因为我删掉了它以便人们更容易诊断问题!
头等舱
我写了!!!错误 !!!根据我的日志,在据说是错误原因的代码之后。
SharedPreferences sf;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
sf = getSharedPreferences("MyData", MODE_PRIVATE);
checkCookie();
}
//function for making sure there's data
public void checkCookie() {
editor = sf.edit();
if (sf.getInt("cookies", -1) == -1) {
editor.putInt("cookies", 0);
}
}
//function for retrieving amount of cookies
public int getCookies()
{
editor = sf.edit(); !!! Error here !!!
int x = sf.getInt("cookies", 0);
return x;
}
//function for changing amount of cookies
public void changeCookies(int x)
{
editor = sf.edit();
editor.putInt("cookies", x);
}
二等
我放了!!!错误 !!!在给出的第二个错误处,基本上就是调用带有错误的函数。
//MyActivity is the first class
MyActivity mCookie = new MyActivity();
//function for adding cookies
public void cookieCalc(){
if (Math.abs((5-(millis/1000))) <= 0.005)
mCookie.changeCookies(100 * CB); ... much more similar code
//an if statement within a function which just calls the function getcookies and cookiecalc
if (loop == 2){
cookieCalc();
myText.setText("= " + mCookie.getCookies()); !!! this calls the function which gives error !!!
}
错误是 100%,因为 SharedPreferences 因为它与普通变量一起使用,但我需要保存变量并被告知这是一种非常简单的方法。如果这一切还不够,我无法向你解释,我会将我的整个代码粘贴到 gitHub 或其他查看平台上。
错误日志
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences.edit()' on a null object reference
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at app.z0nen.slidemenu.MyActivity.changeCookies(MyActivity.java:74)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at app.z0nen.slidemenu.menu1_Fragment.cookieCalc(menu1_Fragment.java:75)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at app.z0nen.slidemenu.menu1_Fragment$1.onClick(menu1_Fragment.java:148)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at android.view.View.performClick(View.java:5242)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at android.widget.TextView.performClick(TextView.java:10571)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:21196)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at android.os.Looper.loop(Looper.java:145)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6938)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
04-27 21:11:46.258 26975-26975/app.z0nen.menu E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
【问题讨论】:
-
Activity类并不是所有东西的基类,你不能用new实例化Activity子类并让它正常工作。一方面,onCreate()不会被调用,这似乎是您当前 NPE 的原因。 -
onCreate 在创建我的应用程序的主要功能上。我试图做 system.out.println 但我在我的代码中的任何地方都找不到它。我没有活动子类,我只是创建了一个空白构造函数并拥有它,因此它可以从中接收信息。
-
您应该将 Context 传递给您的第二个班级,而不是创建非托管 Activity
-
MyActivity mCookie = new MyActivity();是在我的 fragment.java 上创建的。我不相信这会导致我崩溃。只有当我添加了偏好之后。我只是这样做纯粹是为了让我可以从一个班级到另一个班级交谈,因为这是我知道的唯一方法。
标签: java android nullpointerexception sharedpreferences