我用View类画一个棋盘
public class Chessboard extends View{...
Chessboard里面定义了一个 public int side 用来记录该是那边走的
还定义了个方法:
     public void changeSide()
{
....
}
但是我用别的类里面
ChessBroad gameView;
if(gameView.side){..}
gameView.changeSide;
这样访问却使虚拟机出错强制退出了
如果我不访问View类里面的数据就不会有错...(把Side放在Chessboard类以外)
求高手解决

解决方案 »

  1.   

    出的什么错?日志显示的什么内容啊,changeSide里面是什么操作,有没有设计到UI操作。应该明白UI单线程安全吧。最好把日志贴出来哦。
      

  2.   

    public class Chessboard extends View{
    public int side;
    ....
      public void changeSide()
    {
       this.side = (side + 1)%2;
    }
    ...
    }
    这样,然后在MainActivity里面新建对象
    Chessboard gameView;
    ...
    然后在代码里面调用 gameView.side
    和调用方法 game.changSide()有问题
    eclipse显示编译成功,但是进入虚拟机运行会出现错误强制退出
    修改代码不访问gameView.side和game.changSide()就没问题
      

  3.   

    你的ChessBoard是通过XML配置进去的吧,因为你这样配置进去的,和代码中new出来的是不一样的运行机制,如果是通过findViewById这样获取过来的,里面像你那么配置的属性是找不到的,必须要先赋值,因为你里面也没有给默认值。建议像这种经常变化的属性在里面加个getter和setter吧
      

  4.   

    贴日志比较好,你的gameView是怎么生成的,xml还是代码new了放进视图的呢。