开发者

Android firing intent from thread

开发者 https://www.devze.com 2023-04-04 04:09 出处:网络
I have created a thread for a game where I am testing if hero (a bitmap) touches the edges of the screen.

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开发者_Go百科 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


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.


If you are starting an activity from your Thread and you have context then you should do like

Intent intent = new Intent(contextOfSourceClass,YourTargetActivity.class);
contextOfSourceClass.startActivity(intent);

because method startActivity(Intent intent) belongs to context class

we are able to call this method directly from our activity because Context is super parent class of Activity in Hierarchy.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号