![](/img/trans.png)
[英]How to open alertDialog on click of Button in Next Activity from First Activity
[英]How to start activity on button click in alertDialog
我在名为“ ViewBreakout”的类中有一个警报对话框设置,按钮设置很好,它可以创建按钮,但是当我尝试添加意图时,我收到一条错误消息,内容为“构造函数Intent(new DialogInterface.OnClickListener() {},Class)未定义” 。 它提供的解决方案是删除参数以匹配intent(); ???
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getContext());
dialogBuilder.setTitle("UNLUCKY :(");
dialogBuilder.setMessage("You lost all your lives");
dialogBuilder.setPositiveButton("try again", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent i = new Intent (this, main.class);//get error here
startActivity(i);
}
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
这是与该类一起使用的代码,当来自另一个类的全局变量等于0时,将设置alertDialog。
这是我在课堂上的代码。 我以为我会向全班同学展示一下我是否缺少某些东西
/**
* Displays a graphical view of the game of breakout
*/
class ViewBreakout extends View implements OnTouchListener, Observer
{
// private static final long serialVersionUID = 1L;
private ControllerBreakout breakoutController;
private GameObject ball;
private GameObject[] bricks;
private GameObject bat;
private int score;
private long frames = 0;
private Paint paint = new Paint();
private boolean isBall = true;
public ViewBreakout(Context context)
{
super(context);
Debug.trace("View Breakout");
setFocusable(true);
setFocusableInTouchMode(true); //
this.setOnTouchListener(this); // Take touch actions
paint.setColor(Color.BLACK); // Paint colour
paint.setAntiAlias(true); // Better quality
if ( W < 600)
paint.setTextSize(30); // Text size
else
paint.setTextSize(40);
}
/**
* Code called to draw the current state of the game Uses
* paint.setColor -- set paint colour
* drawRect: -- Draw rectangle
* setPaint: -- Colour used
* drawText: -- Write string on display
*/
@Override
public void onDraw(Canvas canvas)
{
frames++;
paint.setColor(Color.DKGRAY); // Paint colour
canvas.drawRect(0, 0, W, H, paint);
//if lives is 0 then display message
if(LIVES <= 0){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getContext());
dialogBuilder.setTitle("UNLUCKY :(");
dialogBuilder.setMessage("You lost all your lives");
dialogBuilder.setPositiveButton("try again", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent i = new Intent (this, main.class);
startActivity(i);
}
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
}
您的意图是在另一个类内部类OnClickListener
。 因此,“ this
”是指匿名内部类OnClickListener
的实例。
通过以下方式更改:
Intent i = new Intent (MyActivity.this, main.class);
编辑:
//添加上下文变量
private Context myContext;
public ViewBreakout(Context context){
//your stuff
this.myContext = context;
}
Intent i = new Intent (myContext, main.class);
使用活动上下文代替此
Intent i = new Intent (ActivityName.this, main.class);
其中ActivityName是您的活动类的名称,例如MainActivity
如果在非活动上下文中使用意图,则将上下文传递给该类的构造函数并使用上下文。 开始活动也是如此。 使用上下文在非活动类上下文中开始活动。startActivity(i);
Context mContext;
public ViewBreakout(Context context)
{
super(context);
mContext= context;
....
}
.....
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent (mContext, main.class);
mContext.startActivity(i);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.