所以,有点混淆使用回调,我希望有人可以帮助我:)。我做了一个快速的自定义视图,一旦完成提取,就会使用回调来指示我的活动。
import android.content.Context;
import android.graphics.Canvas;
import android.view.View;
public class CustomViewCallBackTest extends View {
AfterDraw callback;
public interface AfterDraw {
public void afterViewDrawn(Object myEventData);
}
public void setAfterDrawListener(AfterDraw callback) {
this.callback = callback;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//callback.afterViewDrawn(myEventData);
}
public CustomViewCallBackTest(Context context) {
super(context);
}
}
在我的活动中,我设置了所有内容:
CustomViewCallBackTest tbt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tbt.setAfterDrawListener(new AfterDraw() {
@Override
public void afterViewDrawn(Object myEventData) {
// TODO Auto-generated method stub
}
});
}
所以我有一个回调,我可以很容易地使用,我的问题是如何删除这个回调? android之类的东西就是它的GlobalLayoutListener(即getViewTreeObserver()。removeOnGlobalLayoutListener(this))。我已经看到了一些解决方案,解决了从处理程序中删除回调的问题(like here),但我还不熟悉,知道如何对我的情况应用任何东西。如果有人能告诉我如何删除我自己的自定义回调=)
,我一定很感激答案 0 :(得分:0)
tbt.setAfterDrawListener(null);
怎么样?