Passing File with intent, how do i retrieve it

时间秒杀一切 提交于 2020-01-22 09:29:30

问题


Here is what I am passing. pictureFile is a File

Intent intent = new Intent (context, ShowPicActivity.class);
intent.putExtra("picture", pictureFile);

In the next activity which one of the getters do I use to get it?

Intent intent = getIntent(); .....?


回答1:


Try the following:

YourPictureClass picture = (YourPictureClass)getIntent.getExtras().get("picture");

By calling getExtras() in your Intent you get an instance of Bundle.
With the normal get() in class Bundle you can read every Object you pass to the calling Intent. The only thing you have to do is to parse it back to the class your object is an instance of.




回答2:


File implements serializable ( first thing to check to send an object through an intent. ) ( source )

so you can do it, just cast the resulting object to File like this :

File pictureFile = (File)getIntent.getExtras().get("picture");

It should be fine. (it use the getter for 'object' which needs a serializable object and return it. The cast should be enough.)




回答3:


You can send it like this:

intent.putExtra("MY_FILE", myFile);

and retrieve it like this:

File myFile = (File)intent.getSerializableExtra("MY_FILE");

However, it may be better (anyone?) to send the file as a string reference, in which case you could send as:

intent.putExtra("MY_FILE_STRING", myFile.toString());

and retrieve/reconstruct like this:

File myFile = new File(intent.getStringExtra("MY_FILE_STRING"));



来源:https://stackoverflow.com/questions/19397165/passing-file-with-intent-how-do-i-retrieve-it

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!