单击菜单上的重绘(无效)

时间:2012-03-27 22:46:55

标签: android invalidation

我正在学习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,但无济于事。

1 个答案:

答案 0 :(得分:0)

如果从DrawView外部调用invalidate,则必须调用postInvalidate()。

此外,在onDraw方法中播放声音通常不是一个好主意。