我有游戏,在游戏结束后我使用AlertDialog与EditText和Button输入名称,最后我必须将当前得分和玩家名称保存到数据库中,当我点击按钮时,它的罚款我能够保存得分和名字。我的要求是,当我点击相同按钮时,我想改变游戏主页(HomeActivity)的意图。
我的代码是:
public class AnimatedView extends ImageView{
String name;
static int count=0;
private Context mContext;
int x = 130;
int y = 450;
private float a,b;
private int xVelocity = 20;
private int yVelocity = 20;
private Handler h;
private final int FRAME_RATE = 25;
BitmapDrawable ball;
boolean touching;
boolean dm_touched = false;
float move=3;
int bm_x = 0, bm_y = 0, bm_offsetx, bm_offsety,bm_w,bm_h;
boolean paused;
private Paint line, ball1, background;
static int click=0;
private static final int TEXT_ID = 0;
DBCeation dbCeation;
public AnimatedView(Context context) {
super(context);
}
public AnimatedView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
h = new Handler();
}
private Runnable r = new Runnable() {
@Override
public void run() {
//Log.e("game","run called");
if(touching = true)
invalidate();
}
};
@Override
protected void onDraw(Canvas c) {
BitmapDrawable ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ball);
if (x<0 && y <0) {
//x = this.getWidth()/2;
y = c.getHeight()/2;
} else {
//Log.d("s",""+xVelocity);
Log.d("s",""+yVelocity);
x += xVelocity;
y += yVelocity;
if ((x > this.getWidth() - ball.getBitmap().getWidth()) || (x < 0)) {
xVelocity = xVelocity*-1;
}
if (y >( this.getHeight() - ball.getBitmap().getHeight()) ||y <0) {
yVelocity = yVelocity*-1;
}
}
c.drawBitmap(ball.getBitmap(), x, y, null);
//Log.e("sarat",""+touching);
if(click>=2){
if(bm_h+y>630){
final EditText input=new EditText(mContext);
Toast.makeText(getContext(),"game over",Toast.LENGTH_SHORT).show();
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle("Game Is Over");
builder.setMessage("Enter your Name");
// Use an EditText view to get user input.
input.setId(TEXT_ID);
builder.setView(input);
builder.setPositiveButton("save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
name=input.getText().toString();
Log.d("name",""+name);
int score=MainActivity.score;
dbCeation=new DBCeation(mContext);
dbCeation.insertValues(name, score);
//this code is not working and gives compile time error
Intent intent=new Intent(getContext(),MainActivity.class);
startActivity(intent);
}
});
builder.setIcon(R.drawable.ic_launcher);
builder.show();
x=150;
y=200;
xVelocity=0;
yVelocity=0;
}}
if(touching){
// Log.e("game","iftouch called called");
h.postDelayed(r, FRAME_RATE);
bm_w=ball.getBitmap().getWidth();
bm_h=ball.getBitmap().getHeight();
}
}
答案 0 :(得分:2)
试试此代码
Intent intent=new Intent(mContext,MainActivity.class);
startActivity(intent);
答案 1 :(得分:1)
使用mContext
mContext
Intent intent=new Intent(mContext,MainActivity.class);
mContext.startActivity(intent);
答案 2 :(得分:1)
我希望这会对你有所帮助
Intent intent=new Intent(mContext,MainActivity.class);
mContext.startActivity(intent);
否则尝试
mContext.getApplicationContext.startActivity(intent);
答案 3 :(得分:1)
当您从代码中的AlertDialog启动Activity时,请使用该Context启动您的Activity。所以使用它。
Intent intent=new Intent(mContext,MainActivity.class);
mContext.startActivity(intent);