Android设置首选项不保存数据

Android设置首选项不保存数据,android,Android,我正在编写一个简单的照片库应用程序。我希望人们能够滚动浏览图片,并能够将其添加到“收藏夹”列表中 我构建了一个全局的收藏夹类(将该类放在一个cGlobal类中,该类将其定义为静态的) 现在我已经开始工作了,我希望能够保存收藏夹的状态——想法如下: 当应用程序首次启动时,它将从主活动中的首选项加载收藏夹列表 在gallery活动中,它将在首选项中保存收藏状态 似乎当我从主活动加载首选项时,它显示为null。但我可以在画廊活动中读到我写的东西。我有以下测试代码: 在主活动中,当应用程序启动时: //

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

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

现在我已经开始工作了,我希望能够保存收藏夹的状态——想法如下:

  • 当应用程序首次启动时,它将从主活动中的首选项加载收藏夹列表
  • 在gallery活动中,它将在首选项中保存收藏状态
  • 似乎当我从主活动加载首选项时,它显示为null。但我可以在画廊活动中读到我写的东西。我有以下测试代码:

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

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

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

    当您使用
    getPreferences
    时,以下是根据以下内容获得的结果:

    检索一个SharedReferences对象,以访问以下首选项: 这项活动是私人的。这就是所谓的底层 通过传入此活动的 类名称作为首选项名称

    您应该使用相同的名称
    getSharedReferences
    ,以获得不同活动共享的首选项