安卓:保存从内部存储图像中SharedPreferences并显示它

TryMySkills:

我想从我的手机加载图像,并将其应用到ImageView我需要这个图像时,我重新打开保存在应用程序ImageView

我试图做这样的事情与共享偏好。但我得到以下日志错误:

 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);
        }
}

我究竟做错了什么?

theanilpaudel:

这个错误是因为你的编辑器为null。尝试这个

@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);
        }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章