Android onActivityResult从gallary返回后返回null getExtra值和图像
我在按钮onClick上使用此代码从gallary拾取图像Android onActivityResult从gallary返回后返回null getExtra值和图像,android,android-intent,android-gallery,Android,Android Intent,Android Gallery,我在按钮onClick上使用此代码从gallary拾取图像 我想使用putExtra从intent传递字符串,从同一个活动中,我尝试使用getExtra从onActiviryResult获取该值,但得到的却是null值。这是获取我使用intent传递的字符串值的任何方法,这个intent打开图库来选择图像,然后返回到我想要获取我在intent中传递的字符串的相同活动 Intent intent = new Intent(); intent.setType("image/"); in
我想使用putExtra从intent传递字符串,从同一个活动中,我尝试使用getExtra从onActiviryResult获取该值,但得到的却是null值。这是获取我使用intent传递的字符串值的任何方法,这个intent打开图库来选择图像,然后返回到我想要获取我在intent中传递的字符串的相同活动
Intent intent = new Intent();
intent.setType("image/");
intent.setAction(Intent.ACTION_PICK);
intent.putExtra("image_field_tag", field_tag);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), Integer.parseInt(fieldDetlKey));
从上面的代码intent.putExtra(“图像\字段\标记”,字段\标记)代码>值我在ActivityResult中得到空值参见下面的代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Bundle bundle = data.getExtras();
String imgTag = bundle.getString("image_field_tag");
Log.d("image Tag", imgTag);
Log.d("requestCode",""+requestCode);
Log.d("resultCode", ""+resultCode);
}
我正在获取变量imgTag的空值,请告诉我如何从onActivityResult获取额外值
Thanx,当我们希望子活动返回一个结果时,我们需要通过startActivityForResult()方法调用它。当子活动完成作业时,它应该在intent中设置数据,并调用方法setResult(resultcode,intent)通过intent返回数据。
有关详细信息,请参阅本教程
公共静态最终整数选择图片请求代码=200
/**
* start phone Gallery for image selection.
*/
private final void GalleryActivity() {
final Intent mIntent = new Intent();
mIntent.setType("image/*");
mIntent.setAction(Intent.ACTION_GET_CONTENT);
this.startActivityForResult(mIntent, Constant.SELECT_PICTURE_REQUESTCODE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == Constant.SELECT_PICTURE_REQUESTCODE && data != null) {
final Uri Selected_Image_Uri = data.getData();
final String Selected_Image_Path = GetImagePath_FromUri(Selected_Image_Uri);
Toast.makeText(this, "Image Path = " + Selected_Image_Path, Toast.LENGTH_LONG).show();
}
}
}
/**This function use for get image file path from uri
* @param uri for selected image
* @param context activity reference
* @return String
*/
private final String GetImagePath_FromUri(Uri uri) {
final String[] Projection = { MediaStore.Images.Media.DATA };
final Cursor mCursor = managedQuery(uri, Projection, null, null, null);
final int column_index = mCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
mCursor.moveToFirst();
return mCursor.getString(column_index);
}
因为您正在向其他活动发送意图。如果您想在活动结果中接收image\u field\u标签
,您需要使用活动中的setresult
,该活动是您开始使用的startActivityForResult
否,我想将意图发送到相同的活动,并根据“image\u field\u标签”设置我从图库中选择的图像valuehey你得到正确答案了吗?是的,我把我的标签作为请求代码,使用covert标签转换成hascode,这个hascode传递到请求代码中,然后比较这个has代码onActivityResult@KrunalShah这似乎不是一个有效的解决方案。让我们知道你是否明白了这一点。我想从相同的活动中获取值,然后从gallery中拾取图像,当时我从getExtra中获取空值,我在打开gallery时将其放入,这不是OP正在寻找的答案。尝试在intent中执行putExtra
,然后在onActivityResult
中执行getExtra
,返回null。
/**
* start phone Gallery for image selection.
*/
private final void GalleryActivity() {
final Intent mIntent = new Intent();
mIntent.setType("image/*");
mIntent.setAction(Intent.ACTION_GET_CONTENT);
this.startActivityForResult(mIntent, Constant.SELECT_PICTURE_REQUESTCODE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == Constant.SELECT_PICTURE_REQUESTCODE && data != null) {
final Uri Selected_Image_Uri = data.getData();
final String Selected_Image_Path = GetImagePath_FromUri(Selected_Image_Uri);
Toast.makeText(this, "Image Path = " + Selected_Image_Path, Toast.LENGTH_LONG).show();
}
}
}
/**This function use for get image file path from uri
* @param uri for selected image
* @param context activity reference
* @return String
*/
private final String GetImagePath_FromUri(Uri uri) {
final String[] Projection = { MediaStore.Images.Media.DATA };
final Cursor mCursor = managedQuery(uri, Projection, null, null, null);
final int column_index = mCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
mCursor.moveToFirst();
return mCursor.getString(column_index);
}