Android: Save image from Internal storage in SharedPreferences and display it

TryMySkills :

I'm trying to load a image from my phone and apply it to an ImageView. I need this image when I re-open the app to be kept in the ImageView.

I'm trying to do something like that with shared preferences. But I get the following log error:

 Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences$Editor.putString(java.lang.String, java.lang.String)' on a null object reference
   private static final int PICK_IMAGE = 100;
   static SharedPreferences sharedPref;
   static SharedPreferences.Editor editor;
   private static final String PREFS_NAME = "preferenceName";
   Uri imageUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        PROFILE_IMG = (ImageView)findViewById(R.id.profile_image);
        PHOTObutton = (Button)findViewById(R.id.photo_btn);

       // Get from the SharedPreferences
        sharedPref = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);

        String imageUriString = sharedPref.getString("imageURI", null);
        Uri imageUri = Uri.parse(imageUriString);
        PROFILE_IMG.setImageURI(imageUri);

        //open gallery-- select profile photo
        PHOTObutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                openGallery();
            }
        });

    }
    private void openGallery() {
        Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
        startActivityForResult(gallery, PICK_IMAGE);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == PICK_IMAGE){
            imageUri = data.getData();

            sharedPref = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
            editor.putString("imageURI", imageUri.toString());
            editor.commit();

            PROFILE_IMG.setImageURI(imageUri);
        }
}

What am I doing wrong?

theanilpaudel :

This error is because your editor is null. Try this

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == PICK_IMAGE){
            imageUri = data.getData();

            SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, MODE_PRIVATE).edit();
            editor.putString("imageURI", imageUri.toString());
            editor.commit();

            PROFILE_IMG.setImageURI(imageUri);
        }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=296277&siteId=1