当前位置: 首页 > 知识库问答 >
问题:

在执行调用ActivityResult上的activity时,在ActivityResult方法上分段

谭嘉歆
2023-03-14

在我的片段中,我已经开始启动活动对于照片捕获的结束意图。我已经在片段类中重写了onActivityResult回调方法。我已经在主活动中实现了onActivityResult回调,用于其他一些意图。我的问题是片段 onActivity执行后的结果调用活动 onActivityResult 方法并返回空指针异常。片段活性结果方法

@Override
html" target="_blank">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);
        }
    }
}

活动结果

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

我的Logcat

未能将结果ResultInfo{who=null,request=1,result=-1,data=Intent{act=inline data dat}传递给=content://media/external/images/media/222(具有额外功能)}}到活动{com.mobiotics.tvbudydemo/com.mobilotics.tvbuddyemo.tvbddymainactivity}:java.lang.NullPointerException

共有3个答案

刘向阳
2023-03-14

当您使用start ActivityForResult启动的活动完成调用完成()时,将调用public val onActivityResult

越霖
2023-03-14

尝试删除行< code > super . onactivityresult(request code,resultCode,data);在您的片段< code>onActivityResult()中。

瞿子濯
2023-03-14

如果您在活动中定义了onActivityResult,您不能跳过它并直接转到片段。但是,如果活动不知道如何处理它,您可以将其重定向到片段。使用唯一的请求代码来区分谁处理结果。

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

希望这有帮助。

 类似资料:
  • 我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定

  • 我需要对setter方法进行一些过滤,并考虑修改它们,例如: 我不记得有任何这样的实现,它可能不合法(或至少不合适)。我是否应该编写名为的附加setter方法,将作为默认值?这种方式似乎不是打破豆子的方法。 第三个选项是像这样准备单独的过滤器类: 我认为这是常用的用法;但是第二种选择似乎更接近面向对象方法。哪种方式是正确的方式?

  • 要在实例上调用方法,您必须获取实例的引用并调用该方法。该示例说明了如何获取引用和调用方法,检查 API 以获取可用方法的列表。 // 3 ways of doing the same thing $('#jstree').jstree(true) .select_node('mn1'); $('#jstree') .jstree('select_node', 'mn2'); $.

  • 问题内容: 我正试图让nvidia-docker在我的centos7系统上运行: 到目前为止,一切都很好: 现在,让我们尝试使用nvidia运行时: 但是奇怪的是 问题答案: 所以…最后,我完全禁用了selinux并重新启动,并对其进行了修复。

  • 问题内容: 说,我有一个带有SomeType的具有静态方法的Class对象的引用。有没有一种方法可以调用该方法而不先实例化SomeType?最好不要转义强类型。 编辑:好的,我搞砸了。 在这种情况下,someMethod()始终不能是静态的。 问题答案: 根据定义,静态方法是在类上调用的,而不是在该类的实例上调用的。 因此,如果您使用: 您没有实例化任何东西(不考虑由JVM处理并且超出了您的范围的

  • 本文向大家介绍Android判断Activity是否在最上层的方法,包括了Android判断Activity是否在最上层的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android判断Activity是否在最上层的方法。分享给大家供大家参考,具体如下: 更多关于Android Activity相关内容感兴趣的读者可查看本站专题:《Android编程之activity操作技巧总结》