我在旧的遗留系统中发现了这段代码,如果没有任何问题,我不想碰它。但是我觉得这段代码有一些缺陷,我找不到它。这只是不常见的模式还是存在一些隐藏的陷阱或内存泄漏?private static final Foo action = new Foo() { @Override public void onAction(MyDialogFragment fragment) { if (fragment.getContext() != null) { fragment.getActivity().finish(); } }};此代码用于片段中更新:我怀疑匿名内部类的对象具有对父片段的引用,并且由于此类的对象保存在静态字段中,因此永远不会收集它,因此也永远不会收集父片段。我的推理错了吗?
3 回答
皈依舞
TA贡献1851条经验 获得超3个赞
就在这里。最好像这样获得片段:
MyDialogFragment fragment = MyDialogFragment.instance();
fragment.setNavigator(this);
getSupportFragmentManager().beginTransaction().replace(R.id.activity_myDialog_layout, fragment).commit();
有个更好的方法。您可以创建 3 个类和一个将由 3 个类实现的接口。活动、片段和演示者。接口将是合同。这是更先进的。
添加回答
举报
0/150
提交
取消