从图库中选择图像并将其加载到特定活动的图像视图中,并加载到另一个活动的导航抽屉图像视图中

时间:2016-09-30 06:43:07

标签: android imageview

我有一个活动配置文件,用户可以在其中更新他的个人资料图片。同时我有一个导航抽屉,其中更新的个人资料图片应该被加载到导航抽屉的图像视图中。我需要一个代码,用户可以从画廊或相机中选择图像并裁剪它以适应图像视图和应将相同的图像加载到主活动中导航抽屉的图像视图中。

以下是我的ProfileAcitvity的代码在此代码中,我们可以从库中选择图像并加载到图像视图中。但是当我们尝试回到之前的活动并再次回到个人资料活动时,更新的图像就不存在了。我们要再次上传。

public class Profile extends AppCompatActivity {
    ImageView picture;
    private int PICK_IMAGE_REQUEST = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
        picture = (ImageView)findViewById(R.id.picture);
        picture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(getApplicationContext(),"image clicked",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent();
// Show only images, no videos or anything else
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
// Always show the chooser (if there are multiple options available)
                startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
            }
        });
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {

            Uri uri = data.getData();
            myPrefsEdit.putString("url", uri.toString());
            myPrefsEdit.commit();

            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
                // Log.d(TAG, String.valueOf(bitmap));

                picture.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

这是导航抽屉图像    http://i.stack.imgur.com/JTLd3.jpg

提前致谢

3 个答案:

答案 0 :(得分:1)

SharedPreference是最好的主意。从共享首选项中设置MainActivity中的图像。在从画廊或相机中选择图像后的ProfileActivity中将其保存到共享的首页。从ProfileActivity返回MainActivity时还有一件事是在onBackPressed()中使用intent。

例如。

 @Override
    public void onBackPressed() {
        super.onBackPressed();

        Intent intent = new Intent(ProfileActivity.this, MainActivity.class);

        startActivity(intent);
    }

使用此步骤后,也会在MainActivity中设置相同的图像。

答案 1 :(得分:0)

onCreate()中的

执行此操作:

Uri uriString = Uri.parse(myPrefsEdit.getString("url", ""));

            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uriString);
                // Log.d(TAG, String.valueOf(bitmap));

                picture.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }

答案 2 :(得分:0)

从你在mPrefEdit中保存的uri的oncreate方法中加载来自gallary的图像而不是设置图像。

if(mPrefEdit.getString("url","").length>0){
    picture.setImageURI(mPrefEdit.getString("url","");
}