【问题标题】:Using shared preferences in between activities在活动之间使用共享偏好
【发布时间】:2014-03-03 03:55:06
【问题描述】:

我试图在我的项目的两个活动之间共享一个共同的偏好,但由于某种原因我无法传递数据。

我有读取共享偏好的活动 A 和读取和编辑共享偏好的活动 B。

这是我用来在活动 B 中编写共享首选项的代码:

SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context.
    MODE_WORLD_WRITEABLE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("theme", "black");
editor.commit();

在活动 A 中阅读:

SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context.
    MODE_WORLD_WRITEABLE);
String theme=sharedPref.getString("theme","blue");

我尝试过使用不同的模式,它在私人模式下的活动 B 中工作,但它没有与活动 A 共享。出于某些原因,我认为我对这两个不同的活动有两个不同的共享偏好(同名) .如何对这两项活动使用相同的共享偏好?

【问题讨论】:

标签: android sharedpreferences


【解决方案1】:

您可以在任何活动中做得更简单:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

您将在任何地方以这种方式获得相同的偏好。

http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences(android.content.Context)

【讨论】:

    【解决方案2】:

    要在第二个活动中读取共享数据,请更改模式:

    来自 MODE_WORLD_WRITEABLE MODE_WORLD_READABLE

     SharedPreferences sharedPref = getSharedPreferences("myPrefs",Context.MODE_WORLD_READABLE);
      String theme=sharedPref.getString("theme","blue");
    

    【讨论】:

      【解决方案3】:
      // try this way
      1. define SharedPreferences variable in SmartApplication class  also define read and write method SharedPreferences
      
      private SharedPreferences sharedPreferences;
      
       @Override
       public void onCreate() {
              super.onCreate();
      
       sharedPreferences = getSharedPreferences("yourAppName", MODE_PRIVATE);
      
       } 
      
      public void writeSharedPreferences(String key, String value) {
              SharedPreferences.Editor editor = readSharedPreferences().edit();
              editor.putString(key, value);
              editor.commit();
      }
      // write Shared Preferences 
      public void writeSharedPreferences(String key, boolean value) {
              SharedPreferences.Editor editor = readSharedPreferences().edit();
              editor.putBoolean(key, value);
              editor.commit();
      }
      // write Shared Preferences 
      public void writeSharedPreferences(String key, float value) {
              SharedPreferences.Editor editor = readSharedPreferences().edit();
              editor.putFloat(key, value);
              editor.commit();
      }
      
      public void writeSharedPreferences(String key, int value) {
              SharedPreferences.Editor editor = readSharedPreferences().edit();
              editor.putInt(key, value);
              editor.commit();
      }
      
      // write Shared Preferences 
      public void writeSharedPreferences(String key, long value) {
              SharedPreferences.Editor editor = readSharedPreferences().edit();
              editor.putLong(key, value);
              editor.commit();
      }
      
      // get Shared Preferences 
      public SharedPreferences readSharedPreferences() {
              return sharedPreferences;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 2016-07-03
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        • 2014-06-07
        相关资源
        最近更新 更多