Android设置首选项不保存数据

时间:2012-09-04 20:40:26

标签: android

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

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

现在我有了这个工作,我希望能够保存最喜欢的状态 - 这个想法如下:

  1. 当应用首次启动时,它会从主要活动的首选项中加载收藏夹列表。
  2. 在图库活动中,它会将喜爱的状态保存在首选项中。
  3. 似乎当我从主要活动加载首选项时,它会显示为null。但我可以在画廊活动中阅读我写给它的内容。我有以下测试代码:

    在主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");
    }
    

1 个答案:

答案 0 :(得分:2)

当您使用getPreferences时,根据to the javadoc of activity

,您可以获得以下内容
  

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

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