【发布时间】:2016-05-04 01:46:57
【问题描述】:
这里是初级 Java/Android 开发人员。我知道这是一个令人难以置信的过度提问的问题,但是我从我能找到的所有其他线程中尝试过的一切都不起作用。无论。它要么返回 null,要么根本不工作,并在用于获取 SharedPreferences 对象的行上抛出错误。如果这只是一个非常小的错误,我们深表歉意。
下面的完整堆栈跟踪和代码。
05-03 20:35:38.225 18928-18928/com.example.admin2.clicker E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.admin2.clicker, PID: 18928
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.admin2.clicker/com.example.admin2.clicker.Home}: java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences.edit()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences.edit()' on a null object reference
at com.example.admin2.clicker.Home.<init>(Home.java:50)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
代码:
// Used to fetch SharedPreferences object
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
TextView xpText = (TextView) findViewById(R.id.xpText);
TextView lvText = (TextView) findViewById(R.id.lvText);
xpText.setText("Experience: 0/100");
lvText.setText("Level 1");
gameData = this.getSharedPreferences("gameData", MODE_PRIVATE);
}
// The line throwing the error + its context
{
//boolean firstRun = gameData.getBoolean("f", false);
boolean firstRun = true;
if (firstRun) {
SharedPreferences.Editor e = gameData.edit();
e.putInt("xp", 0);
e.putInt("mxp", 100);
e.putInt("lv", 1);
e.putInt("$", 0);
e.putInt("$c", 0);
e.apply();
}
}
如果您有任何问题或需要更多信息,请告诉我。我不确定我需要提供的一切。谢谢。
【问题讨论】:
-
您何时尝试使用
gameData.edit()?您的代码似乎不完整。 -
@Grender gameData.edit() 用于检查应用程序是否首次运行。那里声明了一个编辑器 (
SharedPreferences.Editor e = gameData.edit())。
标签: java android nullpointerexception sharedpreferences