Java onActivityResult未给出任何结果

Java onActivityResult未给出任何结果,java,android,image,browser,android-activity,Java,Android,Image,Browser,Android Activity,我已经编写了一个图像浏览类,它允许用户选择一个图像,但我无法获得该图像的任何路径。onActivityResult没有给出任何结果。我尝试使用Log.v进行检查,但没有成功 头等舱: showImg = new ImageView(context); showImg.setAdjustViewBounds(true); showImg.setOnClickListener(new OnClickListener() { @Override public void onClick(

我已经编写了一个图像浏览类,它允许用户选择一个图像,但我无法获得该图像的任何路径。onActivityResult没有给出任何结果。我尝试使用Log.v进行检查,但没有成功

头等舱:

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);

        }
    });
浏览图像类别:

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构造函数中的第一个setResult(0)似乎没有用处。你对super.onActivity的要求也不一样

记录onActivity的参数值以查看发生了什么

问候,, Stéphane

您在BrowsePicture构造函数中的第一个setResult(0)似乎没有什么用处。你对super.onActivity的要求也不一样

记录onActivity的参数值以查看发生了什么

问候,,
Stéphane

您的BrowsePicture活动缺少onCreate()方法。如果完全删除构造函数并将其当前的代码放在onCreate()中,您可能会得到更好的结果——这是适合活动重载的方法。

您的BrowsePicture活动缺少onCreate()方法。如果完全删除构造函数,并将其当前拥有的代码放在onCreate()中,您可能会获得更好的结果——这是适用于活动重载的。您将看到,您不应该自己实例化活动,而应该实现Android提供的生命周期回调


您似乎已经在正确使用其他一些可用的Android回调函数了(
onActivityResult()
),您只需要使用生命周期回调函数即可。

您应该看看。您将看到,您不应该自己实例化活动,而应该实现Android提供的生命周期回调


您似乎已经在正确使用其他一些可用的Android回调(
onActivityResult()
)您只需要处理生命周期回调。

您的“第一个类”是由BrowseImage启动的类吗?这将有助于获得更多关于每个类正在做什么以及它们在应用程序流中的位置的信息。不,“第一类”启动浏览图像,正如您在OnClick方法中看到的:BrowsePicture select=new BrowsePicture(context)您对安卓如何工作的理解似乎有缺陷。作为开发人员,您不会自己实例化活动。这是由Android活动框架完成的。您只需实现Android活动框架提供的生命周期回调。有关链接,请参见下面的答案。您的“第一堂课”是由BrowseImage启动的课程吗?这将有助于获得更多关于每个类正在做什么以及它们在应用程序流中的位置的信息。不,“第一类”启动浏览图像,正如您在OnClick方法中看到的:BrowsePicture select=new BrowsePicture(context)您对安卓如何工作的理解似乎有缺陷。作为开发人员,您不会自己实例化活动。这是由Android活动框架完成的。您只需实现Android活动框架提供的生命周期回调。有关链接,请参见下面的答案。我确实删除了setResult和super.onActity,并放置了日志,但没有得到任何响应。我同意@mah,它应该在onCreate method.and中,并在重写像onActivityResult这样的方法时使用@Override,以便编译器可以检查是否存在方法签名问题。我确实删除了setResult和super.onActity,并放置了日志,但我没有得到任何响应。我同意@mah,它应该在onCreate method.and中,并在重写像onActivityResult这样的方法时使用@Override,以便编译器可以检查是否存在方法签名问题。但这不是主要活动,您能告诉我如何从另一个类启动BrowsePicture吗?Nvm,我发现如何从另一个类启动,你的解决方案很有魅力。谢谢,但这不是主要活动,你能告诉我如何从另一门课开始浏览图片吗?Nvm,我发现如何从另一门课开始,用你的解决方案很有魅力。谢谢