SharedPreferences在另一个类中返回空值

时间:2018-11-01 12:02:26

标签: android sharedpreferences

提前谢谢..!

我正在开发一个android应用程序。在我的应用程序中,我想将ID存储在共享首选项中

 SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_PRIVATE);
                    SharedPreferences.Editor editor = myPrefs.edit();
                    editor.putString("MEM1", getTrackID);
                    editor.commit();

基于该ID,我想在应用程序中重定向主页,这也很好。

 SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_PRIVATE);
        String username = myPrefs.getString("MEM1","");
 if(username.equalsIgnoreCase("")||username.length()==0) {
                        Intent sessionIntent = new Intent(MainActivity.this,Dashboard.class);
                        startActivity(sessionIntent);
                        finish();
                    }

现在我要进入Dashboard类,在该类中,共享的首选项值将返回为null。 我想获取该ID,该ID优先于我的应用程序的进一步处理。有人可以帮我吗?

   SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_PRIVATE);
                        String username = myPrefs.getString("MEM1","");
                        Log.e(TAG, "TRackNoShared: " + username);

1 个答案:

答案 0 :(得分:1)

我通常创建一个扩展Application进行全局配置的类。在课堂上,我在下方添加

public class MyApplication extends Application {

      private static MyApplication sInstance;

     public static MyApplication getInstance() {
          return sInstance;
      }

      public static Context getAppContext() {
          return sInstance.getApplicationContext();
      }

 public static void saveToPreferences(String preferenceName, String preferenceValue) {
    SharedPreferences sharedPreferences = getAppContext().getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(preferenceName, preferenceValue);
    editor.apply();
         }

   public static String readFromPreferences(String preferenceName, int defaultValue) {
    SharedPreferences sharedPreferences = getAppContext().getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
    return sharedPreferences.getString(preferenceName, defaultValue);
     }
}

然后在清单中添加<application android:name=".MyApplication" 然后我可以从任何地方打电话给MyApplication.saveToPreferences(KEY, VALUE)并取回MyApplication.readFromPreference(KEY, Default Value)。 好东西是您可以重载方法,并具有整数和布尔类型等