0

我正在写一个简单的照片库应用程序。我希望人们滚动浏览图像并能够将它们添加到“收藏夹”列表中。

我已经构建了一个Favorite全局类(将该类放在将其定义为静态的 cGlobal 类中)。

现在我有了这个工作,我希望能够保存收藏夹的状态——想法如下:

  1. 当应用程序第一次启动时,它将从主活动的首选项中加载收藏夹列表。
  2. 在画廊活动中,它将在首选项中保存最喜欢的状态。

似乎当我从主要活动中加载首选项时,它显示为空。但我可以在画廊活动中阅读我写给它的内容。我有以下测试代码:

在主 Activity 中,当应用程序启动时:

///////////////////////////////////////// ////////////////////////////

public class MainActivity extends cBaseView  implements OnClickListener {
    /** Called when the activity is first created. */

    String tr;

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            // load in favrets from prefences
            SharedPreferences pre=getPreferences(MODE_PRIVATE);

// This does not work and tr is equal to no value.
            tr=pre.getString("label","no value");

            // add listeners

///////////////////////////////////////// /////////////////////////

画廊活动

public void onCreate(Bundle savedInstanceState) {      
    // test code
    SharedPreferences pre=getPreferences(MODE_PRIVATE);
    pre.edit().putString("label","ted").commit();

    // tr is set to ted, got the data
    tr=pre.getString("label","no value");
}
4

1 回答 1

2

根据活动的javadoc,当您使用时getPreferences,您会得到以下结果:

检索 SharedPreferences 对象以访问此活动专用的首选项。这只是通过传入此活动的类名作为首选项名称来调用底层的 getSharedPreferences(String, int) 方法。

您应该getSharedPreferences使用相同的名称,以获得不同活动共享的偏好。

于 2012-09-04T20:42:49.763 回答