在片段中为结果启动活动

时间:2013-12-29 18:29:13

标签: java android android-fragments android-activity

我长期以来一直在努力解决这个问题,任何帮助都会受到赞赏。

我有一个包含3个片段的主要活动(换句话说,我有一个带有三个标签的活动)。在第三个片段我有一个按钮通过意图启动一个新的活动。这项新活动是QR扫描仪,因此它基本上会调用相机并等待相机找到合适且有效的QR码。如何将结果返回到我的片段?

我的按钮的 onClick 方法,该方法位于Fragment3中的 onCreate 方法中,它扩展了Fragment类:

        Intent intent = new Intent(getActivity(), ZBarScannerActivity.class);
        startActivityForResult(intent, 1);

我的MainActivity的onActivityResult方法:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode != Activity.RESULT_CANCELED)
    {
        if (resultCode == Activity.RESULT_OK) 
        {
            String result = data.getStringExtra(ZBarConstants.SCAN_RESULT);

        }
    }
}

从此开始,我无法弄清楚如何将这个结果反馈给Fragment3的onActivityResult方法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

FragmentManager.BackStackEntry backEntry=getFragmentManager().getBackStackEntryAt(getActivity().getFragmentManager().getBackStackEntryCount()-1);
String str=backEntry.getName();
Fragment fragment=getFragmentManager().findFragmentByTag(str);

这将为您提供片段的最新实例。确保您添加了这样的backstack条目。

fragmentTransaction.addToBackStack(someName);

或者在添加片段时,您可以提供标记。如下所示

public abstract FragmentTransaction add (int containerViewId, Fragment fragment, String tag)