从帧布局中获取最近替换的片段



我在获取位于硬编码帧布局中的动态放置片段时遇到了一些问题。这是我试图弄清楚的代码。

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);

为了进一步解释这一点,有一个 id paletteFrame 的框架布局包含一个 PaletteFragment .我正在尝试用CanvasFragment替换PaletteFragment,然后调用与该新替换CanvasFragment关联的方法。

现在我得到的错误指出PaletteFragment不能投射到CanvasFragment,这意味着当我使用 findFragmentById(R.id.paletteFrame)paletteFrame中检索片段时,该方法检索被替换的旧PaletteFragment,而不是我替换它CanvasFragment

我已经环顾四周一段时间了,似乎找不到如何获取最近添加的片段。

谢谢!

创建一个 CanvasFragment 的 instane ,并随时更新它,尝试这样的事情:

    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);

最新更新