如何在android中从另一个java类访问SharedReferences值

如何在android中从另一个java类访问SharedReferences值,java,android,android-activity,Java,Android,Android Activity,我在一个类中保存了SharedReferences值,现在我想从不同的java类中访问该值 public void Savetz(String value){ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = sharedPrefe

我在一个类中保存了SharedReferences值,现在我想从不同的java类中访问该值

public  void Savetz(String value){
     SharedPreferences  sharedPreferences =  PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
       SharedPreferences.Editor editor = sharedPreferences.edit();
       editor.putString(TIMEZONE, value);
       editor.commit();
}

 public  String Loadtz(){
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        String tz=sharedPreferences.getString(TIMEZONE, "");
        return tz;

    }

我尝试通过对象从另一个类调用Loadtz,但它显示了不幸的应用程序停止工作的消息。我如何做到这一点。请给出任何线索,我认为您可以从任何类访问。你只需要使用相同的标签。 尝试使用以下方法:

A类:

private static final String TIMEZONE = "timezone";
//-----------
    public  void Savetz(String value){
           SharedPreferences sharedPreferences= this.getPreferences(Context.MODE_PRIVATE);
           SharedPreferences.Editor editor = sharedPreferences.edit();
           editor.putString(TIMEZONE, value);
           editor.commit();
    }
B类:

 private static final String TIMEZONE = "timezone";
    //-----------
     public  String Loadtz(){
          SharedPreferences sharedPreferences= this.getPreferences(Context.MODE_PRIVATE);
          String tz=sharedPreferences.getString(TIMEZONE, "");
          return tz;
        }

使用GetSharedPreferenceString名称,int模式而不是PreferenceManager。GetDefaultSharedPreferenceContext上下文通过添加上下文参数稍微更改这两种方法。在下面的代码中,我将这两个方法都设置为静态,这样,只要您有有效的上下文活动、服务或应用程序类输入到方法参数中,它们就可以在任何地方访问:

public static void Savetz(Context context, String value) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    sharedPreferences.edit()
                     .putString(TIMEZONE, value)
                     .commit();
}

public static String Loadtz(Context context) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    String tz = sharedPreferences.getString(TIMEZONE, "");
    return tz;
}

请发布您的logcat错误跟踪我不明白每个人在不知道错误的情况下是如何回答的!代码中没有任何错误。这不会使应用程序崩溃!关键是不要让应用程序崩溃,对吗?我不理解你的评论,这意味着问题中的应用程序正在崩溃,而你建议的更改并不能阻止它崩溃。因为这两个方法都在同一个类中,并且在这两个方法中使用了相同的关键变量,所以实际上您并没有建议进行任何真正的更改。可能是崩溃,因为他需要在再次创建之前实例化SharedReferences对象。我们需要更多关于这个问题的信息。没错!我们不知道原因。你的答案是完全不相关的。如果不难的话,请解释一下。这两种答案在大多数情况下都是一样的。这绝不可能是崩溃的原因@维根: