上执行呼叫活性片段onActivityResult方法onActivityResult(Fragme

2019-09-02 05:28发布

在我的片段我已经开始startActivityforresult意图进行照片capture.I在片段类已重写onActivityResult回调方法。 我已经实现onActivityResult回调在主要活动中一些其他的意图。 我的问题是片段onActivityResult执行调用活动onActivityResult方法,并返回空指针异常后。 片段onactivityresult方法

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) 
    {
        prof_bitmap = null;
        if (requestCode == 0) 
        {
            Log.e("" ,"entered activity Result Code 0");
            Uri photoUri = data.getData();
            if (photoUri != null) 
            {
                String[] filePathColumn = { MediaStore.Images.Media.DATA };
                Cursor cursor = getActivity().getContentResolver().query(
                        photoUri, filePathColumn, null, null, null);
                cursor.moveToFirst();
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                String filePath = cursor.getString(columnIndex);
                cursor.close();
                Log.e("" ,"File Path" +filePath);
                prof_bitmap = setImage(filePath);
            }
        }
        if (requestCode == 1) 
        {
            Log.e("" ,"entered activity Result Code 1");
            Bitmap bitmap = (Bitmap) data.getExtras().get("data"); 
            prof_bitmap = bitmap;
            Log.e("" ,"entered activity Result Code 1"+bitmap);
            profile_pic.setImageBitmap(bitmap);
        }
    }
}

活动onActivityResult

  @Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    Log.e("" ,"called onActivityResult in main");
    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
}

如何只调用片段onactivityresult方法?

MY logcat的

失败递送结果ResultInfo {谁= NULL,请求= 1,结果= -1,数据=意向{ACT =直列数据DAT =内容://媒体/外部/图像/媒体/ 222(具有额外)}}到活动{com.mobiotics.tvbuddydemo / com.mobiotics.tvbuddydemo.TVBuddyMainActivity}:显示java.lang.NullPointerException

Answer 1:

如果您onActivityResult在活动规定,你不能跳过它,直接进入片段。 你可以把它然而重定向到片段如果活动不知道如何处理它。 使用独特的requestCodes谁处理的结果进行区分。

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    boolean processed = true;

    if (resultCode == Activity.RESULT_OK) 
    {
        if (requestCode == 0) {
            // Something
        } else if (requestCode == 1) {
            // Something
        } else {
            processed = false;
        }
    } else { // Error
        if (requestCode == 0) {
            // Handle error 
        } else {
            processed = false;
        }
    }

    if (!processed) {
        fragment1.onActivityResult(requestCode, resultCode, data);
        fragment2.onActivityResult(requestCode, resultCode, data);
        ...
        super.onActivityResult(requestCode, resultCode, data);
    }
}

注意:请确保调用getActivity()startActivityForResult()从你的片段,而不是简单地使用this.startActivityForResult()。

public void something(Intent intent) {
    getActivity().startActivityForResult(intent);
    // or if you are using SherlockActionBar/Support package
    getSupportActivity().startActivityForResult(intent);
}

希望这可以帮助。



Answer 2:

尝试删除行super.onActivityResult(requestCode, resultCode, data); 在您的片段onActivityResult()



Answer 3:

public void onActivityResult当被称为Activity您开始使用startActivityForResult完成调用finish()



Answer 4:

在活动的onActivityResult称为第一,你不应该删除处理结果在活动,但你想要的东西通过检查requestCode。



Answer 5:

我ASLO面对这个问题。

从片段活动的呼唤

((活动)上下文).startActivityForResult(photoPickerIntent,100);

这里从FragmentActivity“背景”。 现在,结果进来FargmentActivity onActivityResult方法。 切换这个结果,你必须声明片段类的静态变量fragmetn活动类。

static ActivityUploadPhotos activityUploadPhotos;

...
ActivityUploadPhotos f = new ActivityUploadPhotos();
ActivityHome.activityUploadPhotos=f;
......

if(activityUploadPhotos!=null)
{
           activityUploadPhotos.onActivityResult(requestCode, resultCode, data);
}


文章来源: Fragment onActivityResult method on executing calls activity onActivityResult