Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 新的意图不起作用_Java_Android_Android Intent - Fatal编程技术网

Java 新的意图不起作用

Java 新的意图不起作用,java,android,android-intent,Java,Android,Android Intent,为什么新的意图在第二部分(在onTouchEvent内部)有效,而在第一部分(update())无效。如果我把它放在update()方法中(我需要它的地方),它什么都不做。我在里面放了一个日志条目,看看它是否真的通过了if/then,它确实通过了 更新: 好吧,现在越来越奇怪了。我尝试了下面的3个答案,但仍然不起作用。直到我的手机屏幕关闭(使用通过usb连接的android)。现在,当我再次打开它时,我看到新的活动已经开始 更新2: 在仿真器中尝试过,它确实正常工作!这怎么可能 class Ga

为什么新的意图在第二部分(在onTouchEvent内部)有效,而在第一部分(update())无效。如果我把它放在update()方法中(我需要它的地方),它什么都不做。我在里面放了一个日志条目,看看它是否真的通过了if/then,它确实通过了

更新:

好吧,现在越来越奇怪了。我尝试了下面的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;
        }
    }
}
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);