android - 正确设置有关 Activity 关闭的警报对话框?

标签 android android-activity android-alertdialog

我的 Activity 有两个分数。我希望用户选择一个获胜者,如果他们在关闭时相同(即玩家 1 或玩家 2)。作为一个 .NET 用户,我主要尝试做 MessageBox。

不幸的是,根据我的阅读,android 不会以相同的方式处理 UI 线程。并且该 Activity 有“一个泄漏的窗口”。我看着 SO,我看到这个想法是将“dismiss”放在“onPause”中。但是,我没有看到“onPause”函数,并且对如何实现它感到困惑。所以我尝试了下面的内容,但遇到了同样的错误。

我可以对这个人做些什么来确保它正常工作?

  public void onFinish(View v) {
    //get scores
    TextView score1tv = (TextView) findViewById(R.id.tvScore1);
     score1 = score1tv.getText().toString();
    TextView score2tv = (TextView) findViewById(R.id.tvScore2);
     score2 = score2tv.getText().toString();

    //Make sure they aren't the same
    int i_Score1 = Integer.parseInt(score1);
    int i_Score2 = Integer.parseInt(score2);

    if (i_Score1 == i_Score2){

      //alert user
      new AlertDialog.Builder(this)
                .setTitle("Duplicate score")
                .setMessage("Whose score won the bout?")
                .setPositiveButton(boutData[1], new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        //fencer 1 won
                        score1 = "V" + score1;
                        dialog.dismiss();
                    }
                })
                .setNegativeButton(boutData[3], new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        score2 = "V" + score2;
                        dialog.dismiss();
                    }
                })
                .setIcon(android.R.drawable.ic_dialog_alert)
                .create()
                .show();
    }
    Intent intent = new Intent();
    intent.putExtra("edittextvalue","value_here");
    setResult(RESULT_OK, intent);
    finish();
}

编辑:这是我得到的解决方案,感谢我收到的帮助:

 public void onFinish(View v) {
    //get scores
    TextView score1tv = (TextView) findViewById(R.id.tvScore1);
     score1 = score1tv.getText().toString();
    TextView score2tv = (TextView) findViewById(R.id.tvScore2);
     score2 = score2tv.getText().toString();

    //Make sure they aren't the same
    int i_Score1 = Integer.parseInt(score1);
    int i_Score2 = Integer.parseInt(score2);

    if (score1 == score2){

      //alert user
      new AlertDialog.Builder(this)
                .setTitle("Duplicate score")
                .setMessage("Whose score won the bout?")
                .setPositiveButton(boutData[1], new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        //fencer 1 won
                        score1 = "V" + score1;

                        //close out
                        Intent intent = new Intent();
                        intent.putExtra("edittextvalue","value_here");
                        setResult(RESULT_OK, intent);
                        finish();
                       }
                })
                .setNegativeButton(boutData[3], new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        score2 = "V" + score2;

                        //close out
                        Intent intent = new Intent();
                        intent.putExtra("edittextvalue","value_here");
                        setResult(RESULT_OK, intent);
                        finish();

                    }
                })
                .setIcon(android.R.drawable.ic_dialog_alert)
                .create()
                .show();
    }
    else{
        Intent intent = new Intent();
        intent.putExtra("edittextvalue","value_here");
        setResult(RESULT_OK, intent);
        finish();
    }

}

最佳答案

将最后四行放入一个 else 子句中,并在您的 onClick 方法中做类似的事情。

此外,您不必手动调用 dialog.dismiss()。

关于android - 正确设置有关 Activity 关闭的警报对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781987/

相关文章:

android - 从 DialogFragment 获取值

Android Kotlin 按钮 + 警告对话框 + 列表

android - 如何获得背景失焦(模糊)的 Alertdialog

android - 全屏自定义对话框?

android - Android GCM 设备 ID 是否会更改?

java - 移动到另一个 Activity 时 Android 应用程序崩溃

java - 将 GPS 坐标传递给 Activity

android - 如何跳过自定义 ListView 中填充的空条目

android.provider.Telephony.SMS_RECEIVED 不可用

Android 任务历史堆栈 : can have "duplicate activities"?