上执行呼叫活动片段的onActivityResult方法的onActivityResult [英] Fragment onActivityResult method on executing calls activity onActivityResult

查看:167
本文介绍了上执行呼叫活动片段的onActivityResult方法的onActivityResult的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In my fragment I have started startActivityforresult intent for photo capture.I have overridden onActivityResult callback method in fragment class. I have implemented onActivityResult callback in main activity for some other intent. My problem is fragment onActivityResult after execution calls activities onActivityResult method and returns null pointer exception. Fragment onactivityresult method

@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

Activity 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方法?

how to call only fragment onactivityresult method?

我的logcat

未能交付结果ResultInfo {谁= NULL,请求= 1,结果= -1,数据= {意向A​​CT =直列数据DAT =内容://媒体/外部/图像/媒体/ 222(有临时演员)} }到活动{com.mobiotics.tvbuddydemo / com.mobiotics.tvbuddydemo.TVBuddyMainActivity}:显示java.lang.NullPointerException

Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data dat=content://media/external/images/media/222 (has extras) }} to activity {com.mobiotics.tvbuddydemo/com.mobiotics.tvbuddydemo.TVBuddyMainActivity}: java.lang.NullPointerException

推荐答案

如果你的onActivityResult在活动中定义,你不能跳过它,直接进入片段。你可以把它不过重定向到片段如果活动不知道如何处理它。使用唯一的请求codeS谁处理的结果区分开来。

If you have onActivityResult defined in your Activity, you can't skip it and go directly to the Fragment. You can however redirect it to the Fragment if the Activity does not know how to handle it. Use unique requestCodes to differentiate between who handles the result.

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

Note: Make sure to call getActivity().startActivityForResult() from your fragment and not simply using this.startActivityForResult()

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

希望这有助于。

这篇关于上执行呼叫活动片段的onActivityResult方法的onActivityResult的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆