在第一个(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?
答案 0 :(得分: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, ""));
答案 1 :(得分: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);
答案 2 :(得分:0)
您可以使用same code
进行阅读和编辑。您只需使用相同的Prefs文件名和key
作为所需的值。
您可以在主活动中将Pref文件名声明为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, ""));