从 Activity 获取当前可见片段

Get Current Visible Fragment From Activity

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

我是这样做的,但它说我不能用我创建的 3 个自定义 Fragments 中的任何一个来施放 Fragment

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 添加了一个标签名称,所以我也在研究 "find fragment by tag" 但也没有在这方面找到任何东西。

基本上上面的代码都在onActivityResult里面了。我得到一个结果,然后执行上面的代码块。


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

如果这个计划是一个更有效的想法,我也会接受这个答案。

我想你所有的 Fragments 都来自 android.support.v4.app.Fragment?

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

在你的片段中,你需要覆盖 setMenuVisibility 方法并保存传入的布尔值。看 here 现在只需在所有片段中实现一个通用接口,允许 activity 询问片段是否可见,然后你可以顺便投射它们。