2012-09-19 75 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? –