本帖最后由 shdxcy 于 2011-09-08 14:22:08 编辑

解决方案 »

  1.   

    我不知道我理解你的问题没?等于问题是出在“之后才初始化一些公用变量”?
    我仔细读了几遍还是没理解到你的意思。。
    你可以在构造函数里面干一些事情么?class A extends SurfaceView{ public A(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
    }

    }
      

  2.   

    楼主是不是需要随时更改你的自定义surfaceview类里面的变量信息?
    所以在构造函数里面不足以解决需求?
    那你可以在引用的类里面自定义surfaceview是内部类,不就可以用全局变量了么?
      

  3.   

    或者你创建一个公共类,专门保存全局变量的,这样的话你就可以在整个程序的所有类中去引用你所需要的参数了
    不过参数必须是全局,公共,并且是static的
      

  4.   

    看来这问题还真的不好说清楚,构造函数里就是将一些必要的,公共的参数付给对象,让对象能使用这些参数来实时调整自己的运行状态,结果这些参数晚于构造函数被初始化,因为setContentView放在了程序最前面,是要调用对象的构造函数的。
      

  5.   

    好主意。问题其实就是surfaceview里有自绘的线程,这些线程需要通用一些参数,我做的是播放器,就是绘制拉动条的线程需要得到MediaPlayer现在播放到什么位置了然后调整。我还不想让这个线程能直接操作MediaPlayer用getcurrentpositon方法,所以我就需要自己做一个变量存储这些信息,这些信息是实时由MediaPlayer的方法更新的。这些变量肯定是在surfaceview被初始化之后才能被初始化的。这样就涉及到怎样把后初始化的position信息,传给surfaceview里的线程的问题了,如果把线程public了不是个好办法,想问问有没有好办法。
      

  6.   

    线程可以不是pubic的,一般都不pubic,但是参数和信息是可以做成独立pubic final static的