我在获取位于硬编码的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
。
我一直在寻找一段时间,但我似乎无法找到如何获取最近添加的片段。
谢谢!
答案 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);