如何使用SharedPreferences存储Android的持久数据

时间:2011-12-13 04:59:27

标签: android nullpointerexception sharedpreferences

我正在构建一个相机应用程序。我正在尝试使用SharedPreferences保存一些信息。 我想保存一些持久性信息 - 最后拍摄的文件路径。但是在拍照之前第一次使用应用程序时,数据将为NULL。

所以我想在onCreate中使用getSharedPreferences并检查该值是否为null。但据我所知,使用getSharedPreferences的唯一方法是,只有在之前调用了编辑器。因此,我第一次在SharedPreferences对象上获得NULL指针异常。

你如何解决这个问题?

     //inside on Create()
      imageData = getSharedPreferences("ImageData",MODE_PRIVATE);

    SharedPreferences.Editor prefEditor = imageData.edit();

    prefEditor.commit();
    String previousImage = imageData.getString("lastImageTaken", null);
    if(previousImage == null){

        Log.d(TAG,"previous image is NULL");
    }
    else{
        //do something with the filepath            

        }
  //-----------------------
//in onClick of capture button
imageData = getSharedPreferences("ImageData",MODE_PRIVATE);

            SharedPreferences.Editor prefEditor = imageData.edit();
            prefEditor.putString("lastImageTaken", MyActivity.this.pictureFilePath);
            prefEditor.commit();

//inside on Create() imageData = getSharedPreferences("ImageData",MODE_PRIVATE); SharedPreferences.Editor prefEditor = imageData.edit(); prefEditor.commit(); String previousImage = imageData.getString("lastImageTaken", null); if(previousImage == null){ Log.d(TAG,"previous image is NULL"); } else{ //do something with the filepath } //----------------------- //in onClick of capture button imageData = getSharedPreferences("ImageData",MODE_PRIVATE); SharedPreferences.Editor prefEditor = imageData.edit(); prefEditor.putString("lastImageTaken", MyActivity.this.pictureFilePath); prefEditor.commit();

1 个答案:

答案 0 :(得分:1)

请试试这个 阅读SharedPreferences

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    String name = preferences.getString("name","default");
    String email = preferences.getString("email","default");

保存到SharedPreferences

Editor edit = preferences.edit();
                   edit.putString("name", "Roy");
                   edit.putString("email", "roy@mail.com");
                   edit.commit();