Я изучаю Android и java, поэтому это, вероятно, простой вопрос.Redraw (invalidate) в меню нажмите
Я пытаюсь вызвать invalidate() на моем DrawView. Я прочитал об этом, и я думаю, что проблема в том, что я не могу назвать 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();
}
, кажется, как будто Invalidate называется, однако он выходит из строя программу. Есть идеи?
EDIT: Я попробовал dv.postInvalidate(), однако он выбрасывает исключение нулевого указателя. Я попытался инициализировать DrawView dv несколькими способами, но безрезультатно.
lol Я знаю, но я просто играл с ним, чтобы наклоняться, как играть в звуки. Я вытащу его позже. – Bullyen
Я пробовал postInvalidate, однако я получаю исключение нулевого указателя, которое отключает приложение. Должен ли я сделать что-то особенное для инициализации моего объекта DrawView? – Bullyen
Да, извините, я пропустил это. Вы никогда не вызываете конструктор. Таким образом, это должно быть что-то вроде DrawView dv = new DrawView (getApplicationContext()); Если вы не вызываете конструктор, dv инициализируется нулем. Кроме того, убедитесь, что у вас есть инициализированная плата. – lrAndroid