Форум программистов, компьютерный форум CyberForum.ru

lockCanvas() возврашяет null - Android

Восстановить пароль Регистрация
 
pavelgu
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 34
17.02.2013, 03:24     lockCanvas() возврашяет null #1
Доброе время суток. У меня возникла проблема. Пишу 2д игру под андроид (так для себя не чего серьёзного) . За основу взят этот мануал http://megadarja.blo...-1-surface.html . В игре два активити меню игры (start,exit) и собственно сам GameView(класс наследующий от SurfaceView). Проблема заключается в том что при первом запуске игры все работает игра идёт но при нажатии кнопки "назад" возвращаемся в меню игры и после этого если нажать start game появляется пустой черный экран и вылетает exception в lockCanvas() .

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public void scrDraw(Rect mField, Ball mBall, Racquet racquet,
   GameObject pBtn, ArrayList<Brick> listOfBricks)
{
  Canvas canvas = null;
  try
  {
   // подготовка Canvas-а
   canvas = mSurfaceHolder.lockCanvas();//null exception . при повторном запуске
   synchronized (mSurfaceHolder)
   {
        refreshCanvas(canvas, mField, mBall, racquet, pBtn,
          listOfBricks);
   }
  }
  catch (Exception e)
  {
   Log.d(TAG, "(ScrToolKit) Exception happend "+e.getMessage());
  }
  finally
  {
   if (canvas != null)
   {
        mSurfaceHolder.unlockCanvasAndPost(canvas);
        Log.d(TAG, "(ScrToolKit) unlockCanvas happend ");
   }
  }
}

Понимаю что информации мало .Если нужно дополню
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 03:24     lockCanvas() возврашяет null
Посмотрите здесь:

Проверка на null Android
Android Вставить null в SQLite
Android LruCache метод put возвращает null
Android FindViewByID возвращает Null
RelativeLayout findViewById return null Android
Android FindViewByID возвращает Null производного класса View
Android Геокодирование. getFromLocationName() возвращает null
BitmapFactory.decodeFile всегда возвращает null Android
Android Retrofit 2. Возвращаемое значение == null
Обращение к NULL TextView Android
Ошибка on a null object reference Android
Контекст равен null в АсинкТаске во фрагменте Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
17.02.2013, 15:01     lockCanvas() возврашяет null #2
mSurfaceHolder.getSurface().isValid()
для начала вам надо делать проверку (хотя в некоторых примерах её и неделают).
если вы говорите что у вас ошибка после второго запуска, то скорее всего ваш обьект холдера уничтожается а после повторного запуска вы не присваиваете этой ссылке новое "свежее" значение холдера которое приходит в surfaceCreated

а вообще это нормально проверять канвас на null перед тем как что то делать с ним (хотя конечно если у вас null постоянно то что то не так) посмотрите лучше гугловый пример работы с SurfaceView (приложение зовётся LunarLander и идёт вместе с примерами для почти всех андройд платформ (в API 7 и выше точно есть))
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.02.2013, 17:39     lockCanvas() возврашяет null #3
Цитата Сообщение от pavelgu Посмотреть сообщение
canvas = mSurfaceHolder.lockCanvas();//null exception
действительно, если екзепшен в этой строке происходит, то mSurfaceHolder = null
pavelgu
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 34
18.02.2013, 00:09  [ТС]     lockCanvas() возврашяет null #4
Всем спасибо я разобрался
Yandex
Объявления
18.02.2013, 00:09     lockCanvas() возврашяет null
Ответ Создать тему
Опции темы

Текущее время: 07:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru