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开发者_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.
精彩评论