Проблемы с получением данных во внутренний класс - PullRequest
0 голосов
/ 19 ноября 2010

Я пытаюсь написать программу, которая немного выходит за рамки моих возможностей. Программа должна извлекать данные GPS и отображать их на красивой странице графики.Я могу получить доступ к данным GPS, реализовав необходимые интерфейсы слушателя.Я могу отображать хорошую графику, используя сложную структуру программы, использующую SurfaceView.Но когда я пытаюсь объединить эти два функционала (входящие данные и графику), вещи распадаются.

Графическая структура программы в схематической форме:

Activity реализует несколько gpsStatus / Locationинтерфейсы

Anonymous inner class Panel extends SurfaceView  implements SurfaceHolder.Callback
        onDraw() which does the drawing

        inner (instance) class Thread
            run() which does the canvas locking and calls onDraw()

Я надеюсь, что это имеет смысл.Я получил эту структуру с сайта Droidnova, учебника по 2D-графике.Графика нарисована в отдельной теме.Я смог получить из этого очень приятную плавную графику.

Класс "Panel", который расширяет SurfaceView, создается в onCreate для Activity, например: setContentView (new Panel (this));Внутренний класс создается как экземпляр, то есть Thread thread = new Thread () конструктором Panel.

Мои данные с чипа GPS поступают через методы в Activity.Проблема в том, как мне получить эти объекты внутри «Панели» и в onDraw ()?Изнутри onDraw () объекты в Activity (мои данные GPS) недоступны.

Я попытался создать SurfaceView в качестве экземпляра, я попытался переместить SurfaceView, чтобы он стал отдельным классом (с нитью еще внутри).Я пытался реализовать интерфейсы в Panel. Они всегда дают сбой, с отладочными данными, которые я не могу понять.

Любая помощь высоко ценится.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2010

Если внутренний класс объявлен внутри класса Activity (прослушивает данные gps), то внутренний класс должен иметь возможность доступа к переменным-членам класса Activity. Это не очень хорошо, но должно работать.

0 голосов
/ 19 ноября 2010

Я думаю, что если вы обернули свои данные GPS в класс foo и передали ссылку на экземпляр foo в конструктор Panel, у вас должно быть все, что вам нужно.

...