clcurie_11 2013-04-26 09:07 采纳率: 6.7%
浏览 2763
已采纳

不同 activity 中的 SharedPreferences

我用下面的代码从 activity A 中加载 SharedPreferences:

private void SavePreferences(String key, String value){
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
   }

在 activity B 中我想加载 SharedPreferences。下面是一个异常 NullPointerException:

private void LoadPreferences(){   
       SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
       data = sharedPreferences.getString("name", "08:00") ;
   }

我用下面的代码,得到这个编译错误:"No enclosing instance of the type A is accessible in scope"

 private void LoadPreferences(){   
       SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(A.this);
       data = sharedPreferences.getString("name", "08:00") ;
   }

如何访问数据?谢谢!

  • 写回答

2条回答

  • zxd_72 2013-04-28 02:46
    关注

    在两个 Activities 中把 this 替换为 getApplicationContext()
    在Activity A 的 SharedPreferences 是下面的方式:

    private void SavePreferences(String key, String value){
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putString(key, value);
            editor.commit();
            Intent sd=new Intent(this,Secongtess.class);
            startActivity(sd);
           }
    

    Activity B 中按下面的方式获取值:

     private void LoadPreferences(){   
           SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         String  data = sharedPreferences.getString("name", "08:00") ;
         Toast.makeText(this,data, Toast.LENGTH_LONG).show();
       }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记