0

In first (MainActivity) I save data trough SharedPreferences:

Editor editor = mGameSettings.edit(); 
                editor.putString(GAME_PREFERENCES_SHOP, Shops.get(lv.getCheckedItemPosition())); 
                editor.commit();

And I can read this data from MainActivity after restart application:

if (mGameSettings.contains(GAME_PREFERENCES_SHOP)) 

                Tv2.setText(mGameSettings.getString(GAME_PREFERENCES_SHOP, ""));

But how to read and edit this SharedPreferences from other activity?

4

3 に答える 3

3

別のアクティビティに以下のコードを記述します。

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
if (sp.contains(MainActivity.GAME_PREFERENCES_SHOP)) //hoping that GAME_PREFERENCES_SHOP is a static constant defined in MainActivity
                Tv2.setText(sp.getString(MainActivity.GAME_PREFERENCES_SHOP, ""));
于 2013-01-03T12:55:27.003 に答える
1

以下のコードを使用して、異なるアプリケーションから設定値を取得できます

    Context launcherContext = null;
    try {
        final int flags = Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE;
        launcherContext = getApplicationContext().createPackageContext("com.another.package", flags);
    } catch (final NameNotFoundException e) {
        return ;
    }

    final SharedPreferences pref = launcherContext.getSharedPreferences(
            "prefname",
            Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);

    final String prefValue = pref.getString("prefname", null);
    Log.i("test", prefValue);
于 2013-01-03T15:42:07.570 に答える
0

で読み取り、編集できますsame code。同じ Prefs ファイル名とkey必要な値を使用するだけです。public static final String PREFS_NAME = "MyPrefsFile";メイン アクティビティで設定ファイル名を宣言し、アプリケーションのどこからでもアクセスできます。

他のアクティビティの例:

    SharedPreferences mGameSettings = getSharedPreferences(MainActivity.PREFS_NAME, MODE_PRIVATE);
    if (mGameSettings.contains(MainActivity.GAME_PREFERENCES_SHOP)) 
        Tv2.setText(mGameSettings.getString(MainActivity.GAME_PREFERENCES_SHOP, ""));
于 2013-01-03T13:00:37.257 に答える