分享偏好来保存个人资料图片

在我的应用程序中,我想使用默认图像配置文件制作个人资料页面,并允许用户通过从相机拍摄照片或从图库中选择图片进行更改,我成功完成了此操作,这里是我的代码:分享偏好来保存个人资料图片

public class MainActivity extends AppCompatActivity { 

private static final int pick = 1, capture = 2;

Uri imgeUri, touri;

ImageView imp;

SharedPreferences sh;

SharedPreferences.Editor editor;

String S;

boolean d=false;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Log.d("eee","in resume");

setContentView(R.layout.activity_main);

sh = getSharedPreferences("my" ,Context.MODE_PRIVATE);

editor=sh.edit();

imp = (ImageView) findViewById(R.id.profile_image);

if(d==false) {

imp.setImageResource(R.drawable.photo);

}

else{

imp.setImageURI(Uri.parse(sh.getString("link", null)));

}

}

public void changepic(View V) {

final String[] items = {"Take picture", "Choose Picture",

"cancle"};

AlertDialog.Builder build = new AlertDialog.Builder(this);

build.setTitle("Add Photo");

build.setItems(items, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

if (items[which].equals("Choose Picture")) {

Log.d("test","bh");

Intent i = new Intent(Intent.ACTION_PICK);

i.setType("image/*");

startActivityForResult(i, pick);

} else if (items[which].equals("Take picture")) {

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(i, capture);

}

}

}).create().show();

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == pick && resultCode == RESULT_OK) {

imgeUri = data.getData();

Log.d("test","pick");

imp.setImageURI(imgeUri);

editor.putString("link",String.valueOf(imgeUri));

//Log.d("test",f);

editor.commit();

d=true;

} else if (requestCode == capture && resultCode == RESULT_OK) {

Bundle extras = data.getExtras();

Bitmap imageBitmap = (Bitmap) extras.get("data");

imp.setImageBitmap(imageBitmap);

}

}

但问题是,选择图像我将它保存在共享偏好时,我'在活动时去到另一个,并返回这个消失,活动显示默认的图像的图像看起来只是罚款时,我知道它的原因,因为每次我回到配置文件活动时,都会再次创建,并且布尔变量d再次为false。 我该如何解决,当我必须调用获取偏好。

回答:

在“onActivityResult()”方法中,将获取的imageUri(或imagePath)保存到sharedPreferences。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext); 

SharedPreferences.Editor edit = preferences.edit();

edit.putString(key, value);

edit.apply();

代替使用布尔,检查是否sharedPreference值不是空的string.If sharedPreference值不是一个空字符串,更新与来自sharedPreference imageUri(或的ImagePath)的ImageView的。

要在imageView中加载图像,我建议您使用像Picasso或Glide这样的照片加载库。

以上是 分享偏好来保存个人资料图片 的全部内容, 来源链接: utcz.com/qa/266969.html

回到顶部