Android 将数据放入内部类时遇到问题

Android 将数据放入内部类时遇到问题,android,graphics,2d,Android,Graphics,2d,我正试图编写一个程序,这个程序超出了我的能力。这个程序应该能够检索GPS数据并将其显示在一个漂亮的图形页面上。通过实现必要的侦听器接口,我可以很好地访问GPS数据。我可以使用使用SurfaceView的复杂程序结构显示漂亮的图形。但是,当我试图将这两个功能(传入数据和图形)拉到一起时,事情就分崩离析了 程序的图形结构为示意图形式: 活动实现多个gpsStatus/Location接口 Anonymous inner class Panel extends SurfaceView impleme

我正试图编写一个程序,这个程序超出了我的能力。这个程序应该能够检索GPS数据并将其显示在一个漂亮的图形页面上。通过实现必要的侦听器接口,我可以很好地访问GPS数据。我可以使用使用SurfaceView的复杂程序结构显示漂亮的图形。但是,当我试图将这两个功能(传入数据和图形)拉到一起时,事情就分崩离析了

程序的图形结构为示意图形式:

活动实现多个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中创建的,如下所示:setContentView(newpanel(this));内部类由面板的构造函数创建为实例,即Thread Thread=new Thread()

我的GPS芯片数据通过活动中的方法输入。问题是,如何将这些对象放入“Panel”中并放入onDraw()?在onDraw()中,无法访问活动中的对象(我的GPS数据)

我尝试将SurfaceView创建为一个实例,我尝试将SurfaceView移出,使其成为一个单独的类(线程仍在其中)。我尝试在面板中实现接口,这些接口总是会崩溃,调试数据我无法理解


非常感谢您的帮助。

我认为,如果您将GPS数据包装到一个类foo中,并将对foo实例的引用传递到面板上的构造函数中,您应该拥有所需的一切。

如果内部类在Activity类中声明(侦听GPS数据),然后内部类应该能够访问Activity类的成员变量。
它不是很面向对象,但应该可以工作。

那些无法理解的调试消息可能会有帮助,你能发布它们吗?非常感谢。我想这是很明显的…我不是特别有经验,我没有想到你可以通过这种方式重载一个构造函数(即,添加到你提供给它的参数中)…我会试试。这似乎是可行的!我创建了一个类gpsDataHolder,在外部活动(gps回调所在的位置)中有holder.setData(),在内部SurfaceView的onDraw中有holder.getData(),并且能够将鸿沟“桥接”到匿名内部类中。再次感谢您的帮助。该面板(内部绘图类)在我使用的模板中是匿名的,它是由setContentView(new Panel(this))在活动中创建的。我尝试了Panel myPanel=new Panel和setContentView(myPanel(this)),但我确信它也崩溃了。