0

我正在开发一个 Android 应用程序,为了让我保持登录功能,我正在使用 SharedPreferences 应用程序开始崩溃。

这是我为首选项添加的行;

SharedPreferences pref = getApplicationContext().getSharedPreferences("RS_Remember" , getApplicationContext().MODE_PRIVATE);

我很确定这条线会导致错误,因为如果我删除它,它会正常工作。

我收到的错误消息说:

java.lang.Runtime:无法创建应用程序 com.xxx:java.lang.NullPointerException。

知道我应该做什么吗?

编辑

public Activity activity;
    SharedPreferences pref;
    private RSCurrentUserManager()
    {
        super();

            pref = this.activity.getSharedPreferences("RallySpark_Remember",0);


    }


+05-09 18:02:56.221: E/AndroidRuntime(31760): FATAL EXCEPTION: main
+05-09 18:02:56.221: E/AndroidRuntime(31760):
 java.lang.RuntimeException: Unable to create application
 com.x.x.general.RSApplication:
 java.lang.NullPointerException
+05-09 18:02:56.221:
 E/AndroidRuntime(31760):   at
 com.x.x.general.RSCurrentUserManager.<init>(RSCurrentUserManager.java:93)
+05-09 18:02:56.221: E/AndroidRuntime(31760):   at com.x.x.general.RSCurrentUserManager.getInstance(RSCurrentUserManager.java:84)

我没有在任何其他地方使用共享首选项来找到问题,我删除了除其定义之外的所有内容

4

2 回答 2

1

如果您在Activity方法内部,那么您甚至不需要使用Context. 如果您不在内部类或侦听器中或不在内部类或侦听器中,则复制

SharedPreferences pref = getApplicationContext().getSharedPreferences("RS_Remember" , getApplicationContext().MODE_PRIVATE);

SharedPreferences pref = ActivityName.this.getSharedPreferences("RS_Remember" , getApplicationContext().MODE_PRIVATE);

大多数情况下,您会想要使用Activity context而不是Application context. 您可以在 SO 上找到许多关于这两者的良好信息的帖子。我很确定这是您的问题,但如果不是,请发布完整的 logcat 并显示此行在您的代码中的位置。

这个 SO answer很好地解释了这两者

于 2013-05-09T14:38:52.567 回答
1

您可以使用 SharedPreferences 即

SharedPreferences preference=null; 


@Override
protected void onCreate(Bundle arg0) {
preference= this.getSharedPreferences("RS_Remember", MODE_PRIVATE);
if(rememberMe.isChecked()){

                SharedPreferences.Editor editor = preference.edit();
                editor.putString("UserName", name.getText().toString());
                editor.putString("Password", password.getText().toString());


                // Commit the edits!
                editor.commit();


        }

}
于 2013-05-09T14:39:11.187 回答