0

SharedPreferences アプリケーションを使用しているログイン状態を維持するために、Android アプリケーションを開発しています。アプリケーションがクラッシュし始めました。

これは、設定に追加する行です。

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。内部クラスまたはリスナーでない場合、またはその内部にある場合は、replcae

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

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

ほとんどの場合、Activity context代わりにApplication context. SO に関する 2 つの良い情報を含む多くの投稿を見つけることができます。これはあなたの問題だと確信していますが、そうでない場合は、完全な logcat を投稿して、この行がコード内のどこにあるかを示してください。

このSOの答えには、2つの良い説明があります

于 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 に答える