所以无论我多少次尝试在这里和那里调整我的代码,我都会遇到同样的错误。我将发布与错误有关的每一小段代码。
我不会包含不必要的代码,所以如果我的代码看起来不完整,我会将其删除,以便人们更容易诊断问题!
头等舱
我写了!!!错误!!!在根据我的日志被认为是错误原因的代码之后。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)
答案 0 :(得分:1)
你永远不应该自己创建活动实例!只有系统应该这样做。
如果您自己创建实例,onCreate永远不会被调用,因为此实例不会通过标准活动生命周期。
答案 1 :(得分:0)
不要自己做新的实例。 onCreate是br
答案 2 :(得分:-1)
解决
SharedPreferences sf = this.getActivity()。getSharedPreferences(&#34; your_prefs&#34;,Activity.MODE_PRIVATE);
因为它在片段类中我必须添加this.getActivity(),我最后还添加了Activity.MODE_PRIVATE。我可能得到空指针异常,因为它无法访问我的Activity类,因为片段扩展了其他东西?只是猜测我的,到目前为止它仍然没有工作我想要它,但我防止了崩溃。 编辑它没有工作,因为我没有做editor.commit();保存更改。