我正在尝试使用接口/回调在自定义视图和 DialogFragment 之间创建通信。
自定义视图:
public MyDraw extends View implements ColorPickerListener
{
public MyDraw(Context context)
{
super(context);
// ...
MyDialogFragment.setColorPickerListener(this);
}
@Override
public void onColorChanged(int color)
{
// ...
}
}
对话片段
public MyDialogFragment extends DialogFragment
{
public interface ColorPickerListener
{
public void onColorChanged(int color);
}
ColorPickerListener colorPickerListener;
public static void setColorPickerListener(ColorPickerListener listener)
{
colorPickerListener = listener;
}
// ....
private void colorSelected(int color)
{
colorPickerListener.onColorChanged(color);
}
}
这是有效的,但我不确定这是否可以。我害怕内存泄漏,因为我引用了从 View 到对话框片段的静态方法。
是否有任何替代解决方案,例如获取活动、实例或强制转换?