如何在Android中的两个活动之间传输图像

问题描述:

我在网上搜索了所有代码并尝试了所有代码但我没有获得将我的图像从一个活动转移到另一个活动的正确方法。 这里是我的活动答:如何在Android中的两个活动之间传输图像

Intent intent = new Intent(getApplicationContext(),Greeting.class); //Greeting is Activity 2 
intent.putExtra("editvalue", edit.getText().toString());    
intent.putExtra("path", ImageURI.toString()); //Got uri in the form of file:///storage/emulated/0/zedge/wallpaper/Incredible_quotes-wallpaper-10355947.jpg 

startActivity(intent); 

这是我如何找回我的形象在活动2:

Uri u=Uri.parse(intent.getStringExtra("path")); 
Log.d("TAGGG222",u.toString()); //printing the sane URI as above. 
imageview.setImageURI(u); 

我失去了一些东西,并请尽可能指导我用正确的方法是什么? 谢谢

+1

你的程序发生了什么?它会崩溃吗?如果是,什么是logcat? u.toString()是否正确打印? – 2014-09-22 18:50:32

+0

file:///storage/emulated/0/zedge/wallpaper/Incredible_quotes-wallpaper-10355947.jpg这是第一个活动中选定图像的URI,我将这个uri传递给了另一个活动并使用了imageView.setImageURI(uri)但它显得空白。该应用程序不会崩溃。 – therealprashant 2014-09-22 18:54:30

+1

检查imageview对用户是可见的。在XML布局文件中静态设置其图像资源,并确保它可见。 – 2014-09-22 18:59:49

你可以把它作为一个额外的,例如intent.putExtra(“data”,bitmap)。一个位图实现了Parcelable,所以你可以把它放在一个额外的。同样,一个包已经putParcelable。

如果您想将它传递给中间活动,我会将它存储在一个文件中。这样更有效率,而且对你来说工作更少。您可以使用MODE_PRIVATE在数据文件夹中创建任何其他应用无法访问的私有文件。

+1

我同意,在活动之间传递位图是个坏主意 - 消耗的内存太多。您宁愿将其保存在应用程序的专用缓存目录中(不再需要写入权限),将其路径置于意图中,然后在下一个活动中再次读取该文件。 – judepereira 2017-03-09 07:24:27