0

在第一个(MainActivity)中,我通过 SharedPreferences 保存数据:

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

我可以在重新启动应用程序后从 MainActivity 读取这些数据:

if (mGameSettings.contains(GAME_PREFERENCES_SHOP)) 

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

但是如何从其他活动中读取和编辑此 SharedPreferences 呢?

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 回答