最近从framelayout获取替换片段

时间:2018-03-21 19:44:11

标签: android android-layout android-fragments

我在获取位于硬编码的framelayout中的动态放置片段时遇到了一些麻烦。这是我想要弄清楚的代码。

FragmentManager fragmentSwitchManager = getFragmentManager();

FragmentTransaction fragmentSwitchTransaction = fragmentSwitchManager.beginTransaction();
fragmentSwitchTransaction.replace(R.id.paletteFrame, new CanvasFragment());
fragmentSwitchTransaction.addToBackStack(null);
fragmentSwitchTransaction.commit();

FragmentManager fragmentManager = getFragmentManager();

CanvasFragment canvasFragment = (CanvasFragment)fragmentManager.findFragmentById(R.id.paletteFrame);
canvasFragment.updateColor(color);

为了进一步解释这一点,我们提供了一个包含paletteFrame的id PaletteFragment的framelayout。我正在尝试将PaletteFragment替换为CanvasFragment,然后调用与新替换的CanvasFragment相关联的方法。

现在我发现错误我指出PaletteFragment无法转换为CanvasFragment,这意味着我使用{{1}从paletteFrame检索片段时},该方法会检索已替换的旧版findFragmentById(R.id.paletteFrame),而不是我替换它的PaletteFragment

我一直在寻找一段时间,但我似乎无法找到如何获取最近添加的片段。

谢谢!

1 个答案:

答案 0 :(得分:0)

创建CanvasFragment的实例,并在需要时更新它,尝试这样的事情:

    FragmentManager fragmentSwitchManager = getFragmentManager();

    FragmentTransaction fragmentSwitchTransaction = fragmentSwitchManager.beginTransaction();
    CanvasFragment canvasFragment = new CanvasFragment();
    fragmentSwitchTransaction.replace(R.id.paletteFrame,canvasFragment);
    fragmentSwitchTransaction.addToBackStack(null);
    fragmentSwitchTransaction.commit();

    canvasFragment.updateColor(color);