Android 将从用户库上载的图像传递到其他活动

Android 将从用户库上载的图像传递到其他活动,android,image,gallery,Android,Image,Gallery,我有一个注册活动,用户可以从其图库上载图像,我想将此照片传递到主活动中的导航抽屉,也传递到用户配置文件活动,但我找不到方法,注册活动代码: 注册活动代码: public class RegisterActivity extends AppCompatActivity implements View.OnClickListener { de.hdodenhof.circleimageview.CircleImageView uplo; private static int RESULT_LOAD_

我有一个注册活动,用户可以从其图库上载图像,我想将此照片传递到主活动中的导航抽屉,也传递到用户配置文件活动,但我找不到方法,注册活动代码:

注册活动代码:

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
de.hdodenhof.circleimageview.CircleImageView uplo;
private static int RESULT_LOAD_IMAGE = 1;
Context ctx = this;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    final Button bRegister = (Button) findViewById(R.id.bRegister);
    //upload profile image
    uplo = (de.hdodenhof.circleimageview.CircleImageView)       findViewById(R.id.uploadimage);
    uplo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(
                    Intent.ACTION_PICK,
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

            startActivityForResult(i, RESULT_LOAD_IMAGE);
        }
    });



    bRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                Intent i = new Intent(RegisterActivity.this,MainActivity.class);
              i.putExtra("picture", String.valueOf(uplo));
                startActivity(i);
                finish();


        }

    });

}
//to take the chosen image from user mobile gallery
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = {MediaStore.Images.Media.DATA};

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        uplo.setImageBitmap(BitmapFactory.decodeFile(picturePath));


    }


}
一个代码示例将非常有用 谢谢

发送意向书

Intent intent = new Intent(Home.this, Upload.class);
intent.putExtra("picture", thumbnail);
并在其他活动中接收

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("picture");

希望它能工作:)

如果您想发送图像,只需发送路径即可。 把它改成

bRegister.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

            Intent i = new Intent(RegisterActivity.this,MainActivity.class);
          i.putExtra("picture", picturePath);// send path
            startActivity(i);
            finish();


    }

});
并在另一个活动中接收路径

并设置为

.setImageBitmap(BitmapFactory.decodeFile(picturePath));
如果您想访问其他活动的图片,请选择第二个

只需将路径作为
USER\u DP
string放入共享首选项中。你想买什么就买什么例如

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String picturePath = cursor.getString(columnIndex);

    shared.edit().putString("USER_DP",picturePath).commit();// like this

您可以使用下面的代码将您的路径保存到共享首选项中,并可以根据需要获取路径。初始化共享首选项

SharedReferences SharedReferences=context.getSharedReferences(共享,context.MODE\u PRIVATE);
SharedPreferences.Editor=sharedPref.edit()

保存路径

public void保存路径(字符串键,字符串路径){
编辑器.putString(键,路径);
commit();
}

检索特定类中的路径--

`公共字符串getPath(字符串键){

if(sharedPref.contains(key)){

} 返回“”;
}`

您可以将图像路径保存在首选项中,并在不同屏幕中使用首选项中的图像路径加载图像。步骤1:使用具有内存缓存的图像加载库(毕加索、Glide等)。步骤2:将标识图像的
Uri
传递给其他活动,他们可以使用相同的图像加载库加载图像,并从缓存中获取。以共享首选项保存图像路径,如果路径可用,则显示图像这会极大地浪费内存。您不仅在自己的过程中创建了
位图的多个副本
,而且由于系统缓存了类似的
Intent
对象,因此也不必要地占用了额外的系统RAM。此外,如果图像太大,您将得到一个
失败的活页夹事务
,因为
意图
及其附加项有大小限制。
String path="";
  path=sharedPref.getString(key, " ");
 return path;