Android 对话框片段和 onActivityResult

Posted

技术标签:

【中文标题】Android 对话框片段和 onActivityResult【英文标题】:Android Dialog Fragments and onActivityResult 【发布时间】:2014-09-02 03:59:24 【问题描述】:

我创建了一个应用程序,它向用户显示一个对话框片段,其中包含两个选项:YesNo

如果用户选择“是”,应用程序将调用安装在设备上的Zxing barscan应用程序,并返回结果。

现在,我有了这个工作的概念证明。然而,这个概念证明使用了一个简单的 Activity。因此,我可以使用活动而不是对话框片段来实现此 Barscan 结果。

概念证明中使用的代码如下:

    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    //retrieve scan result
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);

    if (scanningResult != null) 
        String scanContent = scanningResult.getContents();      
        String scanFormat = scanningResult.getFormatName();
        formatTxt.setText("FORMAT: " + scanFormat);
        contentTxt.setText("CONTENT: " + scanContent);
        
    else
        Toast toast = Toast.makeText(getApplicationContext(), 
            "No scan data received!", Toast.LENGTH_SHORT);
        toast.show();
       

此代码不适用于对话框片段。我一直在搜索并遇到this 问题。

但是它不会集成,因为我无法访问所需的 requestCode、resultCode 或 intent,并且对如何访问感到非常困惑。

【问题讨论】:

【参考方案1】:

您的片段应该通过startActivityForResult 而不是getActivity().startActivityForResult 发起活动

onActivityResult 的活动中调用super.onActivityResultonActivityResult 的片段中,您可以将您发布的代码放在此处。

更多信息为什么:

onActivityResult is not being called in Fragment Where should onActivityResult be handled, dialog fragment, fragment, or activity?

【讨论】:

谢谢。所以我理解正确,我应该将 onActivityResult() 添加到调用片段的活动中。正是在这个活动中,我可以从 barscan 应用程序中检索结果? 这取决于你想在哪里处理你的回复。如果在片段内部,请执行我在这里写的操作,如果在内部活动通过 getActivity().startActivityForResult 调用它并在活动中处理它。

以上是关于Android 对话框片段和 onActivityResult的主要内容,如果未能解决你的问题,请参考以下文章

在android中的类内的对话框片段的线性布局中添加textview

在片段android中显示对话框

在 Android Studio 中看不到对话框片段

活动中自定义对话框内的 ANDROID 片段

状态栏在全屏对话框片段android中将其颜色更改为黑色

如何将选定的对话框值设置为片段中的 TextViews [重复]