2012-09-19 31 views
0

在此方法中,我将模式设置为1;将变量发送到OnTouch方法

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(); 

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

回答

1

没有,mode1值不为1,这应该是0

只要看看这两行代码..

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

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

要创建一个新的类Mode对象mode2

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

现在来吧代码行2

mode = mode2.mode1; 

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

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

Now how can you access this value in other class? 

要么做一个成员字段mode1静态,并直接与类名访问现场,

一样,Mode.mode1

或者使用相同的对象用于检索( get)从中设置mode1的值的mode1的值。

+0

那么我如何从Mode类中获取mode1? –