如何根据您在上一个活动中执行的操作显示另一个活动上的对话框

时间:2011-08-06 21:57:24

标签: java android alertdialog

我想要一个注册页面和一个创建帐户页面。在创建帐户页面填写您的信息后,我想回到注册页面,其中包含一个帐户创建成功或代码重新发送的对话框。

截至目前,我正在检查网络服务器的响应,并根据状态显示一个对话框,然后关闭创建帐户活动,在弹出对话框的同时在后台显示注册页面并告诉您帐户已创建或代码重新发送。

但是到目前为止它所做的只是关闭我的活动而不显示对话框。我假设我必须在注册页面上打开对话框,但我不知道如何询问它是“创建”还是“重新发送”。如果你能给我一些关于如何根据我所说的内容展示相应对话框的提示,我将非常感激。

谢谢

这是我的代码 note 在填写完信息后按下按钮

public void btnCreate(View v) throws Exception {
    // if we get to here we can send the information to the webserver

    String response = makeRequest(email.getText().toString(), fName
            .getText().toString(), lName.getText().toString());
    if (response != null) {
        org.json.JSONObject obj = new org.json.JSONObject(response);
          //response is created make created dialog
        if ("Created".equals(obj.getString("status"))) {
            new AlertDialog.Builder(CreateAccount.this)
                    .setTitle("Account Creation Successful")
                    .setMessage(
                            "An activation code has been sent to you. Please check your SPAM folder if you do not receive your activation code email")
                    .setNeutralButton("OK", null).show();
         // response is resend and sends the resend dialog
        } else if ("Resend".equals(obj.getString("status"))) {
            new AlertDialog.Builder(CreateAccount.this)
                    .setTitle("Code Resent")
                    .setMessage(
                            "Your activation code has been resent to your email.\n\nIf you are not receiving your activation code, our email is being blocked. Please email us at 'help@iphone-tracker.net' and we will manually send you a code.")
                    .setNeutralButton("OK", null).show();
        }
    }
      //finishes this activity and shows the registration activity (the one before create account)
    finish();

}

3 个答案:

答案 0 :(得分:1)

正如你自己提到的,你可能应该在下一个活动中创建对话框。开始新活动时,您可以将额外信息传递给活动。

做类似的事情:

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
i.putExtra("login_successful", true); // Only true if they logged in.
startActivity(myIntent);

然后在您的新活动中,您只需检索从早期活动发送的额外信息,方法是检索创建新活动时收到的包(onCreate(Bundle savedInstance))。

savedInstanceState = this.getIntent().getExtras();
boolean yes = savedInstanceState.getBoolean("login_successful");

当然你也可以在字符串和其他原始类型中加入。

顺便说一下,您不需要“完成”当前活动来显示下一个活动 - 我在想如果用户想要注销或以其他用户身份登录?当您在活动上调用finish方法时,它将从活动堆栈中删除,并且在您完全重新启动应用程序之前无法检索。

答案 1 :(得分:0)

在AlertDialog构建器的setNeutralButton中,设置一个DialogInterface.onClickListener并执行在那里启动单个活动的逻辑。

答案 2 :(得分:0)

听起来我希望您的注册成为ActivityForResult并返回结果。根据结果​​,调用Activity可以显示不同的信息(结果函数就像一个intent,所以也可以在其中打包信息)