Java Android使来自其他类的视图无效
我有两个类MyView和MyThread,希望每隔几毫秒从MyThread类中的计时器重新绘制视图。 计时器开始运行,但我的视图不会被重新绘制,我不明白为什么。这是我的密码: MyView:Java Android使来自其他类的视图无效,java,android,Java,Android,我有两个类MyView和MyThread,希望每隔几毫秒从MyThread类中的计时器重新绘制视图。 计时器开始运行,但我的视图不会被重新绘制,我不明白为什么。这是我的密码: MyView: public class MyView extends SurfaceView{ private MainActivity mainActivity; private Random random = new Random(); public MyView(Context context) { supe
public class MyView extends SurfaceView{
private MainActivity mainActivity;
private Random random = new Random();
public MyView(Context context) {
super(context);
mainActivity = (MainActivity)context;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
setBackgroundColor(Color.argb(random.nextInt(255),random.nextInt(255),
random.nextInt(255),random.nextInt(255)));
}
}
内容如下:
public class MyThread implements SurfaceHolder.Callback {
private Timer timer = new Timer();
private MainActivity mainActivity;
private MyView myView;
public MyThread(Context context) {
mainActivity = (MainActivity) context;
myView = new MyView(context);
timer.schedule(new TimerThread(),50,50);
}
class TimerThread extends TimerTask {
@Override
public void run() {
mainActivity.runOnUiThread(new TimerTask() {
@Override
public void run() {
Log.v("Log","Timer run");
myView.setBackgroundColor(Color.RED);
myView.invalidate();
}
});
}
}
如果有任何帮助,我们将不胜感激。不要使用new MyView在MyThread创建新的引用,您必须将已有的引用作为参数传递。另外,我不确定,但您可以从其他线程调用invalidate。请您再解释一下,现在如果我删除这个新的MyView(),会引发一个Nullpointerexception。请将您的构造函数更新为public MyThread(Context Context,View reference),这样您就可以使用该引用调用方法了。我不是从表面视图扩展,而是从视图扩展