从活动中获取当前可见的片段

时间:2015-04-22 18:28:32

标签: android fragment onactivityresult

在我的(现已弃用)ActionBarActivity中,我想找出Fragment可见的内容,以便我可以在正确的方法中调用方法。

我这样做但它说我无法使用我创建的3个自定义Fragment投射Fragments

if (requestCode == 99) {
    Fragment f = getFragmentManager().findFragmentById(R.id.main_frag);
    if (f instanceof GasFragment) {
        // call method
    } else if (f instanceof OilFragment) {
        // call method
    } else if (f instanceof VehicleFragment) {
        // call method 
    }
}

我为每个Fragment添加了一个标记名称,因此我也在研究“fragment {tag”,并且在该方面也没有找到任何内容。

基本上上面的代码在onActivityResult内。我抓住了一个结果,然后执行上面的代码块。

注意:上面的代码是我完成同样事情的第二种方法但是我没有选择工作。最初,我在Nav抽屉里打开了一个SettingsActivity并使用了startActivityFromResult()。我希望将结果捕获到open Fragment中以调用相关方法。但是,我无法从Fragment的{​​{1}}中获取结果,因此我决定在父onActivityResult() ActionBarActivity中执行上述代码块。

如果这个计划更有效,我也会接受这个答案。

2 个答案:

答案 0 :(得分:3)

我想你的所有碎片都是从android.support.v4.app.Fragment延伸的?

在这种情况下,您必须使用getSupportFragmentManager().findFragmentById(),因为getFragmentManager().findFragmentById()将返回android.app.Fragment

答案 1 :(得分:0)

在你的片段中,你需要覆盖setMenuVisibility方法并保存传入的布尔值。看看here 现在只需在所有片段中实现一个通用接口,允许活动询问片段是否可见,然后你可以按顺序进行播放。