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.
加载中,请稍侯......
精彩评论