Android的SharedPreferences在片段

我正在尝试阅读Fragment内部的SharedPreferences。 我的代码就是我用来获取其他Activity的首选项。

SharedPreferences preferences = getSharedPreferences("pref", 0); 

我得到错误

  Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper 

我试图遵循这些链接,但没有运气通过静态方法和静态SharedPreferences 访问 SharedPreferences 。 感谢您的任何解决scheme。

  • String是Android或Java中的原语还是Object?
  • SharedPreferences应用程序上下文与活动上下文
  • 将Bundle保存到SharedPreferences
  • android:从string数组中获取项目并在文本视图中逐一显示
  • 操作栏主页按钮无法使用嵌套的PreferenceScreen
  • 在多进程模式下使用SharedPreferences
  • PreferenceActivity中的Resume重新加载首选项
  • Android 2.2数据备份:如何备份DefaultSharedPreferences?
  • getSharedPreferences方法是Context对象的一个​​方法,所以只要从Fragment调用getSharedPreferences就行不通了,因为它不是Context! (Activity是Context的扩展,所以我们可以从它调用getSharedPreferences)。

    所以你必须得到你的应用程序上下文

     // this = your fragment SharedPreferences preferences = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE); 

    明显的答案不适合我,我不得不使用

     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 

    作为谨慎的提示,上面的用户提供的答案是正确的。

     SharedPreferences preferences = this.getActivity().getSharedPreferences("pref",0); 

    但是,如果您在调用onAttach之前尝试获取片段中的任何内容,则getActivity()将返回null。