1

ユーザー ID を 1 つのアクティビティの SharedPreference に格納しようとしており、任意のアクティビティでこの整数 ID を取得したいと考えています。
この値を共有設定に入れるには、次のコードを使用します。

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putInt("userId", varaible);                 
prefsEditor.commit();  

次に、この値を取得しようとしています。これには次のコードを使用します

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
    int userId = myPrefs.getInt("userId", -1);  

しかし、userIdではなく-1が返されます。次の行を使用して整数値を取得すると、実行時例外が表示されます。

    int userId = myPrefs.getInt("userId", Integer(null));   

コードの何が問題なのかわかりません。別のアクティビティでこの整数の userId を取得する方法。
参考やヒントを教えてください。
前もって感謝します。

4

2 に答える 2

0

コードに問題はありません。この正確なケースをテストしたところ、完全に機能しています。確かに、デフォルト値を-1として使用できます。

同じアプリケーションに両方のアクティビティがありますか?

デバッグのために私が提案できることは、アプリケーションが期待どおりの順序で実行され、値が正しく保存されていることを確認することです。同じアクティビティ内に保存した後、直接取得を試みることができます。

于 2013-01-04T08:52:03.530 に答える
-1

これを変える:

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
int userId = myPrefs.getInt("userId", -1);  

これに

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
int userId = myPrefs.getInt("userId", 0);  

そのように動作するはずです。

于 2013-01-04T07:57:44.350 に答える