将变量发送到 OnTouch 方法



在此方法中,我将模式设置为 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();

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

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

看看这两行代码就知道了。

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

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

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

根据类对象初始化规则,系统会为新的 Mode 类分配内存。因此,它的所有成员变量和字段都使用新的 mwmory 初始化为。

现在进入代码行 2

mode = mode2.mode1; 

您正在使用对象mode2访问新创建的类Mode mode1的成员字段。

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

Now how can you access this value in other class?

要么将成员字段mode1静态字段,然后直接访问具有类名的字段,

比如,Mode.mode1

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

最新更新