onActivityResult не дает никаких результатов - PullRequest
1 голос
/ 09 июня 2011

Я кодировал класс просмотра изображений, который позволяет пользователю выбирать изображение, но я не могу найти путь к изображению.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);

        }
    });

BrowseImage Класс:

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

Ответы [ 3 ]

1 голос
/ 09 июня 2011

В вашей активности BrowsePicture отсутствует метод onCreate ().Возможно, вы получите лучшие результаты, если полностью удалите конструктор и поместите код, который у него есть в данный момент, в onCreate () - это то, что подходит для перегрузки Activity.

0 голосов
/ 09 июня 2011

Вы должны взглянуть на жизненный цикл активности Android, как определено в обзоре классов для класса активности .Вы увидите, что вы не должны сами создавать экземпляры Activity, а должны реализовывать обратные вызовы жизненного цикла, предоставленные Android.

Похоже, что вы уже используете некоторые из других доступных обратных вызовов Android, (onActivityResult()) вам просто нужно работать с обратными вызовами жизненного цикла.

0 голосов
/ 09 июня 2011

Ваш первый setResult (0) в конструкторе BrowsePicture не кажется полезным.Ваш звонок в super.onActivity отсутствует.

зарегистрируйте значения параметров onActivity, чтобы увидеть, что происходит.

С уважением, Стефан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...