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

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

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

popup window и surfaceview - holder.lockCanvas() return null - Программирование Android

14.02.2014, 18:22. Просмотров 1006. Ответов 0
Метки нет (Все метки)

Осуществил попытку добавить в мой popup window surfaceview
Java
1
2
3
4
5
6
7
8
9
10
public void Show() {
        pw = new PopupWindow();
        pw.setFocusable(true);
        pw.setOutsideTouchable(true);
        pw.setContentView(new MessengerView(this.findSurface().getContext(),
                pw, this.text));
        pw.setWidth(300);
        pw.setHeight(300);
        pw.showAtLocation(this.findSurface(), Gravity.CENTER, 0, 0);
    }
внутриности MessengerView
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
holder = getHolder();
    viewThread = new ViewThread(this);
    holder.addCallback(new Callback() {
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format,
                int width, int height) {
            onSurfaceChanged();
        }
 
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            onSurfaceLoaded();
        }
 
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            viewThread.closeThread();
        }
 
    });
внутриности потока рисования
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void run() {
        while (running) {
            Canvas canvas = null;
            try {
                // подготовка Canvas-а
                canvas = view.getHolder().lockCanvas();
                canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
                synchronized (view.getHolder()) {
                    view.draw(canvas);
                }
            } catch (Exception e) {
            } finally {
                if (canvas != null) {
                    view.getHolder().unlockCanvasAndPost(canvas);
                }
            }
        }
    }
в этом случае canvas = null
log errore
XML
1
02-14 00:17:48.632: E/SurfaceHolder(22131): Exception locking surface 02-14 00:17:48.632: E/SurfaceHolder(22131): java.lang.IllegalArgumentException 02-14 00:17:48.632: E/SurfaceHolder(22131): at android.view.Surface.lockCanvasNative(Native Method) 02-14 00:17:48.632: E/SurfaceHolder(22131): at android.view.Surface.lockCanvas(Surface.java) 02-14 00:17:48.632: E/SurfaceHolder(22131): at android.view.SurfaceView$4.internalLockCanvas(SurfaceView.java) 02-14 00:17:48.632: E/SurfaceHolder(22131): at android.view.SurfaceView$4.lockCanvas(SurfaceView.java) 02-14 00:17:48.632: E/SurfaceHolder(22131): at sushi.thread.ViewThread.run(ViewThread.java:39)
этот же сюрфейс нормально работает на обычном активити - тут погибает, в чем проблема, помогите!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2014, 18:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос popup window и surfaceview - holder.lockCanvas() return null (Программирование Android):

lockCanvas() возврашяет null - Программирование Android
Доброе время суток. У меня возникла проблема. Пишу 2д игру под андроид (так для себя не чего серьёзного) . За основу взят этот мануал...

Явная загрузка разметки из xml для popup window - Программирование Android
Возможно ли для popupwindow загружать разметку через xml, чтобы не мучатся и создавать разметку в коде? А также как на момент когда попап...

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

Как передать тег (view.setTag(holder) - Программирование Android
Здравствуйте! Использую адаптер и у меня он вида: class ItemAdapter extends BaseAdapter { private ImageLoadingListener...

RecyclerView и java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter pos - Программирование Android
Добрый день! У меня есть RecyvlerView, который изумительно работает на всех устройствах, кроме Samsung. На Samsung я получаю...

Ошибка в SurfaceView - Программирование Android
есть игра. отрисовка идет через SurfaceView и поток привязанный к нему. ошибка возникает в следующем моменте - я открываю сам игровой...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2014, 18:22
Привет! Вот еще темы с ответами:

Работа с SurfaceView - Программирование Android
Отрисовка в SurfaceView никогда не вызывала трудностей, до тех пор, пока не запустил приложение на телефоне с экраном 1920х1080px. Фпс упал...

Восстановление SurfaceView - Программирование Android
Кто работал с SurfaceView, помогите! Рисую на SurfaceView с помощью onTouchEvent(), без потока, все замечательно рисует, сворачиваю...

SurfaceView + onKeyDown - Программирование Android
Проблемка очень простая - не реагирует на onKeyDown в классе, наследующем SurfaceView. Исправьте мою криворукость, пожалуйста, подскажите,...

Мерцание в SurfaceView - Программирование Android
Всем привет! Рисую на SurfaceView фон и на нем анимированные объекты. Кадры беру из атласа. Появилось мерцание, причем фон не мерцает а...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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