Android alertdialogue返回布尔值

时间:2013-08-31 18:05:10

标签: android

我正在打一个简单的脚本,其中有两个选项的确认框。我需要在活动中多次调用它。所以我做了一个方法来做到这一点。基于返回的布尔值我想写条件语句。

// Before oncreate

  static boolean confirmation;   





     private void showConfirmation() {
            // UserFunctions userFunctions = null;
            // TODO Auto-generated methodastub

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ProfileActivity.this);

            // set title
            alertDialogBuilder.setTitle("test");
            // set dialog message
            alertDialogBuilder.setMessage("Please update the unfilled fields.").setCancelable(false)
                    .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {

                            dialog.cancel();
                            confirmation = false;

                        }
                    }).setNegativeButton("Later on", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {

                            confirmation = true;
                        }
                    });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();

    }    








  @Override
    public void myOnClickRecharge(View v) {

        showConfirmation();
        if (confirmation){ 

        Intent intent = new Intent(getApplicationContext(), NewActivity.class);
        startActivity(intent);
        }
    }

1 个答案:

答案 0 :(得分:0)

这样你总会返回false,因为该方法不会等待关闭对话框。我建议您使用一个静态布尔值,并根据单击的按钮更改其值。在onCreate()之前:

boolean confirmation;

然后在你的代码中:

alertDialogBuilder.setMessage("Please update the unfilled fields.").setCancelable(false)
        .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                confirmation = false;
                dialog.cancel();
            }
        }).setNegativeButton("Later on", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                  confirmation = true;
            }
        });

然后你这样检查:

if (confirmation)
{
    //Do something (TRUE)
}
else
{   
    //Do something (FALSE)
}

希望这会有所帮助。祝你好运。