Java 如何从最低版本获取onActivityResult
在我的应用程序中,我可以选择从图库中选择图片。我想在图像视图上放置图像…对于最高版本的Api 21,我的代码在图像视图上放置图像,但对于最低版本的Api 15,不在图像视图上放置图像。请任何人帮帮我 我的应用程序配置:Java 如何从最低版本获取onActivityResult,java,android,Java,Android,在我的应用程序中,我可以选择从图库中选择图片。我想在图像视图上放置图像…对于最高版本的Api 21,我的代码在图像视图上放置图像,但对于最低版本的Api 15,不在图像视图上放置图像。请任何人帮帮我 我的应用程序配置: minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" 我的代码在这里: 公共类ProfileFragment扩展了该片段{ //私有静态位图图像=空; 私人影像
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
我的代码在这里:
公共类ProfileFragment扩展了该片段{
//私有静态位图图像=空;
私人影像视图;
专用静态最终int选择_PHOTO=1;
私有字符串selectedImagePath=null;
私有Uri mselectedimageri;
按钮浏览功能;
@凌驾
公共视图OnCreateViewLayoutFlater充气机、视图组容器、,
捆绑存储状态{
SetHasOptions菜单;//用于选项菜单
视图=充气机。充气机。布局。碎片\布局\剖面图,容器,
错误的
imageView=ImageViewview.findViewByIdR.id.profile\U图像;
browseProfilePic=按钮视图.findviewbydr.id.btn\u pick;
browseProfilePic.SetOnClickListener新建视图.OnClickListener{
@凌驾
公共视图v{
意向=新意向;
//只显示图像,不显示视频或其他任何内容
intent.setTypeimage/*;
intent.setActionIntent.ACTION\u获取内容;
//如果有多个选项可用,则始终显示选择器
startActivityForResultIntent.createChooseContent,选择图片,选择照片;
}
};
返回视图;
}
@凌驾
ActivityResultant请求代码、int-resultCode、意图数据上的公共无效{
如果resultCode==MenuActivity.RESULT\u正常{
如果requestCode==选择照片{
mselectedimageri=data.getData;
selectedImagePath=getPathmSelectedImageUri;
System.out.printlnImage Path:+选择EDIMAGEPATH;
imageView.setImageURImSelectedImageUri;
}
}
}
公共字符串getPathUri
{
字符串[]投影={MediaStore.Images.Media.DATA};
Cursor Cursor=getActivity.getContentResolver.queryuri,投影,null,null,null;
如果cursor==null,则返回null;
int column_index=cursor.getColumnIndexOrThrowMediaStore.Images.Media.DATA;
cursor.moveToFirst;
字符串s=cursor.getStringcolumn\u索引;
光标。关闭;
返回s;
}
@凌驾
SaveInstanceStateBundle上的公共无效超出状态{
super.onSaveInstanceStateoutState;
//将图像位图保存到outState
位图位图=BitmapDrawableimageView.getDrawable.getBitmap;
outState.putParcelablebitmap,位图;
}
@凌驾
ActivityCreatedBundle savedInstanceState上的公共无效{
super.onActivityCreatedsavedInstanceState;
//从savedInstanceState读取位图并将其设置为ImageView
如果savedInstanceState!=null{
位图位图=位图savedInstanceState.getParcelablebitmap;
imageView.setImageBitmapbitmap;
}
}
@凌驾
创建选项菜单菜单菜单,菜单充气机菜单{
super.oncreateoptions菜单,充气机;
//为菜单充气;这会将项目添加到操作栏(如果存在)。
充气机。充气机。菜单。菜单\配置文件\图片,菜单;
}
@凌驾
公共布尔值OnOptions ItemSelectedMenuItem项{
//处理操作栏项目上的按下
开关item.getItemId{
案例R.id.行动完成:
Toast.makeTextgetActivity.getApplicationContext,已保存,Toast.LENGTH\u LONG.show;
}
返回super.on选项ItemSelectedItem;
}
}
我认为你的代码不应该在任何API版本上工作。
您正在创建一些片段类实例,但它是本地的——它只存在于onActivityResult范围内。
ProfileFragment已附加到您的MenuActivity实例,因此您应该使用FragmentManager或SupportFragmentManager的方法获取对其实例的引用。创建新的ProfileFragment对象没有意义。
另一件事是您应该使用holder活动实例上下文调用startActivityForResult,方法是:getActivity.startActivityForResult。。。
在MenuActivity的onActivityResult方法中,仅调用super.onActivityResult…,仅此而已。
你能解释一下什么不起作用吗?图像视图中没有设置图像