Java 新的意图不起作用
为什么新的意图在第二部分(在onTouchEvent内部)有效,而在第一部分(update())无效。如果我把它放在update()方法中(我需要它的地方),它什么都不做。我在里面放了一个日志条目,看看它是否真的通过了if/then,它确实通过了 更新: 好吧,现在越来越奇怪了。我尝试了下面的3个答案,但仍然不起作用。直到我的手机屏幕关闭(使用通过usb连接的android)。现在,当我再次打开它时,我看到新的活动已经开始 更新2: 在仿真器中尝试过,它确实正常工作!这怎么可能Java 新的意图不起作用,java,android,android-intent,Java,Android,Android Intent,为什么新的意图在第二部分(在onTouchEvent内部)有效,而在第一部分(update())无效。如果我把它放在update()方法中(我需要它的地方),它什么都不做。我在里面放了一个日志条目,看看它是否真的通过了if/then,它确实通过了 更新: 好吧,现在越来越奇怪了。我尝试了下面的3个答案,但仍然不起作用。直到我的手机屏幕关闭(使用通过usb连接的android)。现在,当我再次打开它时,我看到新的活动已经开始 更新2: 在仿真器中尝试过,它确实正常工作!这怎么可能 class Ga
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;
}
}
}
class GameView扩展SurfaceView实现SurfaceHolder.Callback{
私有主线程\u线程;
公共游戏视图(上下文){
超级(上下文);
getHolder().addCallback(此);
_线程=新的主线程(getHolder(),this);
设置聚焦(真);
}
公共无效更新(){
如果(位置>=25){
Log.v(“调试”、“完成”);
//---不在这里工作---
Context=getContext();
意向意向=新意向(上下文,ScoreScreen.class);
背景。开始触觉(意图);
// ------------------
}
}
公共布尔onTouchEvent(运动事件){
已同步(\u thread.getSurfaceHolder()){
if(event.getAction()==MotionEvent.ACTION\u向下){
//---在这里工作---
Context=getContext();
意向意向=新意向(上下文,ScoreScreen.class);
背景。开始触觉(意图);
// ------------------
touchX=(int)event.getX();
touchY=(int)event.getY();
触摸=真实;
if(cardDispencer.contains(touchX,touchY)){
holdingCard=true;
}
int t=返回TouchingCardGrid(touchX,touchY);
if(t
将代码更改为这样
public void update() {
if (deckPos >= 25) {
Log.v("DEBUG", "finished");
Intent intent = new Intent(getApplicationContext(), ScoreScreen.class);
startActivity(intent);
}
}
使用意图而不是上下文变量启动活动。如果您需要更多关于如何使用intent调用另一个活动的说明,您可以找到nice教程更改:
Intent intent = new Intent(context, ScoreScreen.class);
context.startActivity(intent);
致:
意图本身启动了吗?您不是在需要时调用yout update()方法。。。
Intent intent = new Intent(your_current_activity.this, ScoreScreen.class)
startActivity(intent);