我正在学习Android和java,所以这可能是一个简单的问题。
我试图在DrawView上调用invalidate()。我已经阅读了它,我认为问题是我无法在UI线程(或其他东西)之外调用invalidate。据我所知,我只有一个线程在运行,因为这是一个简单的TicTacToe游戏。所以这是我的代码。
DrawView dv;
创建dv对象以将其与DrawView类
相关联dv.invalidate();
尝试调用invalidate方法。
这是我的DrawView类的第一部分
class DrawView extends View implements OnTouchListener, OnGestureListener
{
public DrawView(Context context)
{
super(context);
this.setOnTouchListener(this);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawColor(0xFF303030);
Paint paint = new Paint();
paint.setColor(0xFFFFFFFF);
board.draw(canvas);
detectEnd();
}
似乎无效的IS被调用但它崩溃了程序。有什么想法吗?
编辑:我尝试了dv.postInvalidate()但它抛出了一个空指针异常。我试过用几种方法初始化DrawView dv,但无济于事。
答案 0 :(得分:0)
如果从DrawView外部调用invalidate,则必须调用postInvalidate()。
此外,在onDraw方法中播放声音通常不是一个好主意。