2012-11-28 46 views
0

爲什麼新的意圖在第二部分(在onTouchEvent中)而不是在第一部分(update())中工作。如果我把它放在方法update()(我需要它),它不會做任何事情。我在其中放入了一個日誌條目,看看它是否真的通過了if/then,並且它確實通過了。新的意圖不工作

更新:

確定它現在得到WEIRD。我在這裏嘗試了所有3個答案,但仍然無法工作。直到我的手機屏幕熄滅(使用通過USB連接的android)。現在,當我再次打開它時,我發現新的活動已經開始!

更新2: 在模擬器中嘗試過它,它確實正常工作!這怎麼可能?

class GameView extends SurfaceView implements SurfaceHolder.Callback { 
    private MainThread _thread; 

public GameView(Context context) { 
     super(context); 
     getHolder().addCallback(this); 

     _thread = new MainThread(getHolder(), this); 
     setFocusable(true); 
} 

public void update() { 


     if (deckPos >= 25) { 
      Log.v("DEBUG", "finished"); 

      // --- DOESNT WORKS HERE --- 
      Context context = getContext(); 
      Intent intent = new Intent(context, ScoreScreen.class); 
      context.startActivity(intent); 
      // ------------------ 

     } 


    } 


public boolean onTouchEvent(MotionEvent event) { 
     synchronized (_thread.getSurfaceHolder()) { 

      if (event.getAction() == MotionEvent.ACTION_DOWN) { 


      // --- WORKS HERE --- 
      Context context = getContext(); 
      Intent intent = new Intent(context, ScoreScreen.class); 
      context.startActivity(intent); 
      // ------------------ 

       touchX = (int) event.getX(); 
       touchY = (int) event.getY(); 
       touching = true; 

       if (cardDispencer.contains(touchX, touchY)) { 
        holdingCard = true; 
       } 

       int t = returnTouchingCardGrid(touchX, touchY); 

       if (t < gridIDs.length && gridIDs[t] == 0) { 
        gridIDs[t] = deck[deckPos]; 
        deckPos++; 
        updateScore(); 
       } 

      } 

      if (event.getAction() == MotionEvent.ACTION_MOVE) { 
       touchX = (int) event.getX(); 
       touchY = (int) event.getY(); 
      } 

      if (event.getAction() == MotionEvent.ACTION_UP) { 

       int t = returnTouchingCardGrid((int) event.getX(), (int) event.getY()); 

       if (t < gridIDs.length && gridIDs[t] == 0 && holdingCard) { 
        gridIDs[t] = deck[deckPos]; 
        deckPos++; 
        updateScore(); 
       } 

       touching = false; 
       holdingCard = false; 

      } 

      return true; 
     } 
    } 
} 
+0

你是不是叫YOUT update()方法時,你想要... – QuokMoon

回答

0

更改代碼喜歡意圖此

public void update() { 

    if (deckPos >= 25) { 
     Log.v("DEBUG", "finished"); 

     Intent intent = new Intent(getApplicationContext(), ScoreScreen.class); 
     startActivity(intent); 
    } 
} 

開始活動,而不是與上下文變量。如果你需要進一步澄清了如何使用意圖調用另一個活動,你可以找到很多不錯的教程here

+0

有意向開始嗎? –

+0

對不起,我沒有注意到。謝謝你告訴我這件事 –

0

變化:

Intent intent = new Intent(context, ScoreScreen.class); 
context.startActivity(intent); 

到:

Intent intent = new Intent(your_current_activity.this, ScoreScreen.class) 
startActivity(intent);