Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
440 views
in Technique[技术] by (71.8m points)

Android firing intent from thread

I have created a thread for a game where I am testing if hero (a bitmap) touches the edges of the screen.

Part of the Thread:

protected void updatePhysics() {
mBallX += elapsed * mBallDX;
        mBallY += elapsed * mBallDY;

        if((mBallX <= 0 & mBallDX < 0) | (mBallX >= mCanvasWidth - mBall.getWidth() & mBallDX > 0) ) {
            mBallDX = -mBallDX;
            updateScore(1);

        }
    }

This is from a tutorial. Instead of updateScore(1) I want the game to be over and open the GameOver activity. I am using this code in other activities but here in the thread it shows an error:

Intent intent_btn_gameover = new Intent(GameThread.java, GameOver.class);   
startActivity(intent_btn_gameover);

The method startActivity(Intent) is undefined for the type GameThread and it does not like GameThread.java (The constructor Intent(GameThread, Class) is undefined). I don't know what to set as the first parameter of the Intent.

Thanks

Edit:

private Context gContext;

and

Intent intent_btn_nextlevels = new Intent(gContext, GameOver.class);
startActivity(intent_btn_nextlevels);

Error: The method startActivity(Intent) is undefined for the type GameThread

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

The first parameter of Intent's constructor is a Context. You must pass the activity where the Thread is being executed, for instance:

Intent intent_btn_gameover = new Intent(NameOfActivity.this, GameOver.class);   
startActivity(intent_btn_gameover);

If the thread is not inside an activity, you must pass somehow a reference to the activity that executes it.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...