2 csh 34 csh_34 于 2013.03.25 10:30 提问

从不同的 activity 中访问 SharedPreferences

在第一个activity (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, ""));

如何从其它的activity中读取和编辑这个SharedPreferences?

2个回答

nana4ever
nana4ever   2013.03.25 13:57
已采纳

在另一个 activity 中添加下面的代码:

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, ""));
qq_33514421
qq_33514421 搜了很多用法,都是大同小异。还是这个比较受用
接近 2 年之前 回复
qq_33514421
qq_33514421 不知道为什么会被踩...
接近 2 年之前 回复
CSDN_Ask
CSDN_Ask   2013.04.02 15:03

用下面的代码从不同的程序中获取优先值

 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);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!