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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
pavelgu
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 34
#1

lockCanvas() возврашяет null - Программирование Android

17.02.2013, 03:24. Просмотров 956. Ответов 3
Метки нет (Все метки)

Доброе время суток. У меня возникла проблема. Пишу 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 ");
   }
  }
}

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

Проверка на null - Программирование Android
Как правильно создать условие. У меня есть строчки кода, которые в переменную apiTokenMy записывают значение String tokenMy1 =...

Вставить null в SQLite - Программирование Android
Есть такой код @Override public void onCreate(SQLiteDatabase db) { db.execSQL(&quot;CREATE TABLE &quot;+ DATABASE_TABLE+ &quot; (&quot;+ ...

FindViewByID возвращает Null - Программирование Android
День добрый. Я в разработке андроида новичек, и застрял можно сказать в самом начале. Имеется проект типа hello world Один...

Обращение к NULL TextView - Программирование Android
У меня есть TextView описанный в XML в GridLayout. И есть ListView который этими GridLayout и заполняется. Возникает исключение....

RelativeLayout findViewById return null - Программирование Android
Я что-то не пойму никак.. почему RelativeLayout возвращает не ссылку на TextView, а null? @Override public Dialog...

Retrofit 2. Возвращаемое значение == null - Программирование Android
Делаю небольшое приложение для VK. Решил использовать Retrofit 2. Набросал простенький запрос, но в ответ приходит код 200 и null. ...

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

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

Вызов функции и NULL reference - Программирование Android
Итак, в MainActivity описана следующая функция setuFeed(): public class MainActivity extends AppCompatActivity { private...

Ошибка on a null object reference - Программирование Android
Появляется ошибка java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View...

Геокодирование. getFromLocationName() возвращает null - Программирование Android
По адресу (город, улица, дом) пытаюсь получить координаты. С некоторых пор почти всегда getFromLocationName() возвращает null. Хотя ранее...

Контекст равен null в АсинкТаске во фрагменте - Программирование Android
Хочу что бы при пересоздании Activity не исчезал DialogProgress со статусом выполняемого AsyncTask'а. Для этого AsyncTask вызываю во...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.02.2013, 00:09
Ответ Создать тему
Опции темы

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