0

在这种方法中,我将模式设置为 1;

bTouch.setOnClickListener(new View.OnClickListener() {     
  public void onClick(View v) {
    mode1=1;
      Intent startGame = new Intent(
        "com.example.mygame.GFXSurface");
        startActivity(startGame);
  }
});

当我在 onTouch 方法中的其他类中调用该模式时返回 0

public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
    GameSurface gamesurface = new GameSurface(this);
    Mode mode2 = new Mode();
    mode= mode2.mode1; 
        if (mode == 1){        // this should be 1 but is 0
            x = event.getX();
            y = event.getY();

任何人都知道如何做到这一点的解决方案?

4

1 回答 1

1

不,mode1值不是 1,它应该是 0。

看看这两行代码..

Mode mode2 = new Mode();
mode= mode2.mode1; 

现在从 1 个代码行Mode mode2 = new Mode();

您正在创建一个新的 ClassMode对象mode2

根据类对象初始化规则,您被分配了一个新模式类的内存。所以它的所有成员变量和字段都用新的 mwmory 初始化。

现在进入代码行 2

mode = mode2.mode1; 

您正在使用object访问mode1新创建的类的成员字段。Modemode2

那么它如何保持旧值 1 呢?(再想想)

Now how can you access this value in other class?

将成员字段mode1设为静态并直接使用类名称访问该字段,

喜欢, Mode.mode1

或者使用相同的对象来检索(获取)mode1 的值,从中设置 mode1 的值。

于 2012-09-19T17:38:50.533 回答