Java 如何在开始新活动之前等待“确定”按钮

Java 如何在开始新活动之前等待“确定”按钮,java,android,android-activity,messagebox,Java,Android,Android Activity,Messagebox,您好。我有一个问题,当单击按钮时,我会显示一个消息框。消息框显示注册确认。之后,我打开一个新活动。 问题是它显示messagebox,然后启动新活动,而不等待单击ok按钮。如何仅在单击ok按钮时显示新活动 下面是我使用的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R

您好。我有一个问题,当单击按钮时,我会显示一个消息框。消息框显示注册确认。之后,我打开一个新活动。 问题是它显示messagebox,然后启动新活动,而不等待单击ok按钮。如何仅在单击ok按钮时显示新活动

下面是我使用的代码

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);

        Button btn = (Button)findViewById(R.id.registerButton);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), BookingActivity.class);
                AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(context);

                dlgAlert.setMessage("You have successfully Registered.Please Press okay to continue");
                dlgAlert.setTitle("Registration");
                dlgAlert.setPositiveButton("OK", null);
                dlgAlert.setCancelable(false);
                dlgAlert.create().show();


                startActivity(intent);
                finish();
            }
        });
将代码更改为

 @Override
            public void onClick(View view) {
               // Intent intent = new Intent(getApplicationContext(), BookingActivity.class);
                AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(context);

                dlgAlert.setMessage("You have successfully Registered.Please Press okay to continue");
                dlgAlert.setTitle("Registration");
                dlgAlert.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Intent intent = new Intent(getApplicationContext(), BookingActivity.class);
                        startActivity(intent);
                    }
                });
                dlgAlert.setCancelable(false);
                dlgAlert.show();

不要在那里开始活动。删除行
startActivity(intent)
finish()
。你需要这样做

builder.setPositiveButton(R.string.label_ok, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        Intent intent = new Intent(your arguments here) 
        startActivity(intent);
     }
});
builder.show();
因此,您需要做的就是将该行更改为
setPositiveButton
,并按照上面给出的方式使用

根据您的风格,您不是在对话框中设置操作,而是在显示对话框的按钮上设置操作。

试试这个

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);

        Button btn = (Button)findViewById(R.id.registerButton);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(context);
                dlgAlert.setMessage("You have successfully Registered.Please Press okay to continue");
                dlgAlert.setTitle("Registration");
                dlgAlert.setPositiveButton("OK", null);
                dlgAlert.setCancelable(false);
                dlgAlert.create().show();
                dlgAlert.setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    Intent intent = new Intent(getApplicationContext(), BookingActivity.class);
                    startActivity(intent); 
               }
         });
     }
});

确定添加
侦听器
,单击并在其中执行您想要的操作。对不起,我怀疑这是否正确。你在onClick中有dlgAlert,因此不能在外部使用它。我已经编辑了我的ans。现在可以了吗?如果我做错了什么,请指出。谢谢!专门用来指出错误的。这就是我们学习的方式:)好吧,我是android新手,所以我很挣扎。我在想,我不能使用一些if语句来查看是否单击了“确定”按钮,并将startactivity放入该if语句中。因为我不理解您的代码,DialogInterface.OnClickListener中的代码仅在用户单击按钮时才会触发。您无需检查单击了哪个按钮。setPositiveButton将检查OK,setNegativeButton将检查Cancel。那么,什么是builder?它还说无法解析DialogInterface。我现在很困惑。*我解决了这个问题。让我试着运行它,看看