[英]onActivityResult not giving any results
我编写了一个图像浏览 class 代码,它允许用户选择图像,但我无法获得图像的任何路径。 onActivityResult 没有给出任何结果。 我尝试使用 Log.v 进行检查,但没有成功。
第一个 Class:
showImg = new ImageView(context);
showImg.setAdjustViewBounds(true);
showImg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Select image
BrowsePicture select = new BrowsePicture(context);
Log.v("BrowsePictureSSS", ""+select.filemanagerstring);
Log.v("BrowsePictureSSS", ""+select.selectedImagePath);
Bitmap bMap = BitmapFactory.decodeFile(select.filemanagerstring);
showImg.setImageBitmap(bMap);
}
});
浏览图片 Class:
package com.FWilson.MyFavoritePlaces;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;
public class BrowsePicture extends Activity {
private static final int SELECT_PICTURE = 1;
protected String selectedImagePath;
protected String filemanagerstring;
public BrowsePicture(Activity context) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
context.startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
setResult(0);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
//OI FILE Manager
filemanagerstring = selectedImageUri.getPath();
//MEDIA GALLERY
selectedImagePath = getPath(selectedImageUri);
//DEBUG PURPOSE - you can delete this if you want
if(selectedImagePath!=null)
Log.v("BrowsePic", ""+selectedImagePath);
else System.out.println("selectedImagePath is null");
if(filemanagerstring!=null)
Log.v("BrowsePic", ""+filemanagerstring);
else System.out.println("filemanagerstring is null");
//NOW WE HAVE OUR WANTED STRING
if(selectedImagePath!=null) {
}
else {
}
}
}
}
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
if(cursor!=null)
{
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
else return null;
}
}
您的 BrowsePicture 活动缺少 onCreate() 方法。 如果您完全删除您的构造函数并将其当前拥有的代码放在 onCreate() 中,您可能会得到更好的结果——这适用于 Activity 重载。
您在 BrowsePicture 构造函数中的第一个 setResult(0) 似乎没有用。 您对 super.onActivity 的调用也没有。
记录 onActivity 的参数值,看看会发生什么。
问候, 斯蒂芬
您应该查看活动 class 的 class 概述中定义的 Android 活动生命周期。 您将看到您不应该自己实例化活动,而应该实现 Android 提供的生命周期回调。
您似乎已经在使用其他一些可用的 Android 回调,( onActivityResult()
)您只需要使用生命周期回调即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.