web-dev-qa-db-ja.com

Get Android activity / normalクラスの共有設定値

ユーザー設定を保存する共有設定アクティビティを作成しました。アクティビティまたは通常の値を取得したいJava class.please解決策または例を提供してください。 。

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    SharedPreferences channel=this.getSharedPreferences(strFile, Context.MODE_PRIVATE);
    strChannel=channel.getString(keyChannel,"Default").toString();
    Toast.makeText(getApplicationContext(), strChannel, Toast.LENGTH_LONG).show();
}                     

このコードではstrfileが例です。 com.Android.pack.ClassNameは取得する値のSharedPreference Activityであり、keyChannelはSharedPreference Activityと同じキーです。

ソリューションを提供してください。

31
Sandeep

値を保存したSharedPreferenceActivityがある場合

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String imgSett = prefs.getString(keyChannel, "");

値がアクティビティのSharedPreferenceに保存されている場合、これが値を保存する正しい方法です。

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString(keyChannel, email);
editor.commit();// commit is important here.

これが値を取得する方法です。

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyChannel, ""));

また、Activity以外のクラスでも同様に行うことができますが、唯一の条件は、Activityのコンテキストを渡す必要があることです。このコンテキストを使用してSharedPreferencesを取得します。

mContext.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
67
Umesh

アクティビティから共有設定を取得するためにこのコードを試しましたが、動作させることができませんでした:

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedPreferences.getAll();
    Log.d("AddNewRecord", "getAll: " + sharedPreferences.getAll());
    Log.d("AddNewRecord", "Size: " + sharedPreferences.getAll().size());

プリファレンスアクティビティによって14のプリファレンスが保存されていても、試行するたびにプリファレンスは0を返しました。私は最終的に答えを見つけました。これをonCreateセクションの設定に追加しました。

getPreferenceManager()。setSharedPreferencesName( "defaultPreferences");

このステートメントを追加した後、保存した設定が期待どおりに返されました。これが、私と同じ問題を経験する可能性のある他の人に役立つことを願っています。

4
Dave Cox

これは私にとって最も簡単な手順です:

SharedPreferences sp = getSharedPreferences("MySharedPrefs", MODE_PRIVATE);
SharedPreferences.Editor e = sp.edit();

    if (sp.getString("sharedString", null).equals("true")
            || sp.getString("sharedString", null) == null) {
        e.putString("sharedString", "false").commit();
        // Do something
    } else {
        // Do something else
    }
1
samreen

アプリをアンインストールして、sharedPreferences名を変更してから、このアプリケーションを実行します。問題は解決すると思います。

SharedPreferencesから値を取得するサンプルコード。次のコードセットを使用できます。

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyValue, ""));
0
Codemaker