我有一个Activity,它的Layout包含一个我能够绘制的CustomView,我还有一个片段,我将对其中使用的颜色,笔划宽度和另一个变量进行统计。所以我必须将信息发送到Fragment。
我该怎么做?
我的第一个想法是制作带有颜色,笔画等的列表,然后将每个绘图添加到它所构成的颜色列表中,然后获取列表的大小,最后将其发送到片段。 / p>
或者我可以创建一个变量,并且每次添加颜色,笔触宽度和变量时,特定变量都会增加,但这是同样的问题,我不知道如何将值发送到片段。
第二个问题是这个变量正在改变,所以如果你用红色做一个小线并且你去了statisitc它应该说1个小红线。如果再制作另一个,那么它应该说2条小红线,我怎样才能收到这些值的最新值?
答案 0 :(得分:0)
您可以创建Interface以在View和Fragment之间进行通信。阅读有关Java接口here
的更多信息public class drawView extends View {
private OnColorChangedListener mListener;
//
public interface OnColorChangedListener {
public void colorChanged(int color);
}
public void setOnColorChangedListener(OnColorChangedListener listener){
mListener = listener;
//Call this method to implement this interface in your Fragment
}
@Override
public void onDraw(Canvas canvas){
if(mListener != null){
mListener.colorChanged(somecolor);
}
}
}
public class SomeFragment extends Fragment implements OnColorChangedListener {
public void onCreate(){
drawView v = new drawView();
v.setOnColorChangedListener(this);
}
//If your class claims to implement an interface, all methods defined by that interface must appear in its source code before the class will successfully compile.
public void colorChanged(int color){
//Do your stuff with your color
}
}
答案 1 :(得分:0)
一个可能的解决方案是使用Observer / Observable模式。在这种情况下,您的CustomView是Observable,而Fragment是Observer。创建具有适当名称的Observer(或Listener接口),更改Fragment以实现此接口,并向CustomView添加方法以将Fragment注册为侦听器。现在,您需要做的就是从Listener接口调用onXxx()
方法,以便通知Fragment绘制了一条线。然后片段负责计算您需要的统计数据。