0

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

// 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);
        }
    }
4

1 回答 1

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)
}

希望这可以帮助。祝你好运。

于 2013-08-31T18:45:57.663 回答