Форум программистов, компьютерный форум 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. Просмотров 980. Ответов 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
Явная загрузка разметки из xml для popup window Android
RelativeLayout findViewById return null Android
Как передать тег (view.setTag(holder) Android
RecyclerView и java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter pos Android
Android Ошибка в SurfaceView
Android Мерцание в SurfaceView
Восстановление SurfaceView Android
Android Работа с SurfaceView
SurfaceView + onKeyDown Android
Android SurfaceView не отображается
SurfaceView - широкий рисунок Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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