我在获取位于硬编码帧布局中的动态放置片段时遇到了一些问题。这是我试图弄清楚的代码。
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);