Java 应用程序在计数和对话框中崩溃

Java 应用程序在计数和对话框中崩溃,java,android,Java,Android,我正在使用以下代码 public class MyCount extends CountDownTimer { public MyCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onFinish

我正在使用以下代码

public class MyCount extends CountDownTimer
   {

        public MyCount(long millisInFuture, long countDownInterval) 
        {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onFinish() 
        {
             displayAlertForRestart();
        }

        @Override
        public void onTick(long millisUntilFinished) 
        {
            counter.setText("Time Left: " + millisUntilFinished/1000 + " sec");
        }

     }


   public void displayAlertForRestart()
   {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setMessage("Do you want to Restart?");
    builder.setTitle("Game Over");
    builder.setInverseBackgroundForced(true);
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int which) {

            Intent myIntent = new Intent(context,Level.class);
            startActivity(myIntent);
            dialog.dismiss();
            finish();
      }  
    });
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
        finish();

      }
    });
    AlertDialog alert = builder.create();
    alert.show();
   }
LogCat错误:
alert.show()处出错


像这样更改代码

public class MyCount extends CountDownTimer
   {

   Context mContext;

        public MyCount(long millisInFuture, long countDownInterval,Context context) 
        {
            super(millisInFuture, countDownInterval);

            mContext=context;
        }

        @Override
        public void onFinish(Context context) 
        {
             displayAlertForRestart(context);
        }

        @Override
        public void onTick(long millisUntilFinished) 
        {
            counter.setText("Time Left: " + millisUntilFinished/1000 + " sec");
        }

     }


   public void displayAlertForRestart(Context context)
   {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setCancelable(true);
    builder.setMessage("Do you want to Restart?");
    builder.setTitle("Game Over");
    builder.setInverseBackgroundForced(true);
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int which) {

            Intent myIntent = new Intent(context,Level.class);
            startActivity(myIntent);
            dialog.dismiss();
            finish();
      }  
    });
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
        finish();

      }
    });
    AlertDialog alert = builder.create();
    alert.show();
   }

如果您的倒计时尚未完成,则必须先完成倒计时,然后才能完成活动


完成活动后,请尝试此操作,
myCount.cancel

使用
getApplicationContext()
传递活动对象
,而不是在alertdialog构造函数中使用
此操作
您不能将getApplicationContext()用于对话框,请记住,您可能需要在
Context McContext之前添加
private
我不明白,我在同一个活动中。有什么区别?好的,我尝试这样做如果上下文不正确,那么您将得到此类异常将上下文置于onfinish上要求删除覆盖符号Use displayAlertForRestart(mContext);
public class MyCount extends CountDownTimer
   {

   Context mContext;

        public MyCount(long millisInFuture, long countDownInterval,Context context) 
        {
            super(millisInFuture, countDownInterval);

            mContext=context;
        }

        @Override
        public void onFinish(Context context) 
        {
             displayAlertForRestart(context);
        }

        @Override
        public void onTick(long millisUntilFinished) 
        {
            counter.setText("Time Left: " + millisUntilFinished/1000 + " sec");
        }

     }


   public void displayAlertForRestart(Context context)
   {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setCancelable(true);
    builder.setMessage("Do you want to Restart?");
    builder.setTitle("Game Over");
    builder.setInverseBackgroundForced(true);
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int which) {

            Intent myIntent = new Intent(context,Level.class);
            startActivity(myIntent);
            dialog.dismiss();
            finish();
      }  
    });
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
        finish();

      }
    });
    AlertDialog alert = builder.create();
    alert.show();
   }