爲什麼新的意圖在第二部分(在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;
}
}
}
你是不是叫YOUT update()方法時,你想要... – QuokMoon