问题描述
- 安卓开发,如何解决在片段的片段里调用相册选取图片不显示的问题
-
情况分析:
使用menudrawer这个第三方来建一个主页,实现左边出现菜单栏,点击后跳转到不同片段Fragment的功能。如图,其中有个片段--相册。
这个片段用的是android.support.v4.app.FragmentTabHost这个控件,具体如下:android:id="@+id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" ><LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:focusable="false" android:orientation="horizontal" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> <FrameLayout android:id="@+id/realtabcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> </android.support.v4.app.FragmentTabHost>
在这个片段里又添加了两个片段——片段1和片段2,如图:
我现在的问题就是在片段1里,点击 按钮去相册中选择一张照片后,准备显示在ImageView上,但是不能成功显示,或者说根本就不显示选择的那张照片!
在片段一里调用相册的代码是:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, CODE_BOOK);//CODE_BOOK 是一个Int类型的值,做判断用,这里没多大意义
在onActivityResult方法里获取这张照片,就在这个环节里出显示不出来的问题,代码是:
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK)
{
if (requestCode == CODE_BOOK)
{
Uri originalUri = data.getData(); //获得图片的uri
try
{
Bitmap bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);
mylogos.setImageBitmap(bm);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}}
遇到这样的问题,网上搜索也不知道怎么搜索,查出问题的关节了,在包含这些片段的Activity里的onActivityResult()方法里能够获取到选择相册里的照片的路径,可是在对应的片段里却无法获取到选择的照片的路径,请教谁有有什么解决思路吗?
解决方案
如果你startActivityForResult(intent, CODE_BOOK);是写在fragment里面的话
那@Override fragment的onActivityResult,那里面是能接受到返回值的。