0

SharedPreferences を使用してユーザー ID を保存しようとしています。SharePreferences として保存された値は、どのアプリケーションからでもユーザー ID にアクセスできるように、アプリケーションのすべてのアクティビティで保持されますか? 以下は、ユーザーIDを保存するための私のコードです。

    userid = result.substring(3, result.length());
                Log.d("userid at onpostexecute", userid);
                SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();  // to update userid
                editor.putString("userid", userid);
                editor.commit();

別のアクティビティで SharedPreferences からユーザー ID にアクセスするためのコードを次に示します。

       SharedPreferences prefs = getPreferences(MODE_PRIVATE);  // to access userid
        String userid = prefs.getString("userid", "");
        Log.d("shared prefs userid", userid);

奇妙なのは、上記のコードが onCreate メソッドにあるのに、このコードの前後に他のログ データが表示されているにもかかわらず、Logcat に表示されないことです。では、logcat に表示することさえできないコードに何か問題がありますか? 更新中かどうかもわかりません。

4

2 に答える 2

0

Activityはい、アプリを離れて戻ってきても持続します。ドキュメントから

SharedPreferences クラスは、プリミティブ データ型の永続的なキーと値のペアを保存および取得できる一般的なフレームワークを提供します。SharedPreferences を使用して、boolean、float、int、long、string などのプリミティブ データを保存できます。このデータは、ユーザー セッション間で保持されます (アプリケーションが強制終了された場合でも)。

これLog.d("userid at onpostexecute", userid);さえ表示されない場合は、ブレークポイントをそこに置き、 の値があることを確認しますuserid。また、logcat フィルターをチェックして、すべてのログを取得していることを確認します。念のため、スピナーのタイプが「詳細」に設定されていることを確認してください

于 2013-03-28T01:59:38.250 に答える
0

sharedPreferences として保存された値は、指示があればアクティビティ間で共有できます。現在、同じアクティビティにのみアクセスできる設定を作成しています。以下を使用する必要があります。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();

このように、アプリケーション間で sharedPreference を作成しています。別の質問に対する受け入れられた回答には、トピックに関する多くの説明があります。質問へのリンク 回答で説明したように、設定を保存するために使用している方法は、それを保存したのと同じアクティビティでのみ機能します。

于 2013-03-28T01:59:55.217 に答える