简体   繁体   English

如果在Android中注册成功,我如何进入登录活动?

[英]How do I go to the login activity if registration is successful in Android?

Everything on the server side end of things is working as it should. 服务器端一切正常。 My problem here is that I'm not sure how to go back to login page if the HTTP response is "Registration success!" 我的问题是,如果HTTP响应为“注册成功!”,我不确定如何返回登录页面。

Both my Login and Register classes are relying on BackgroundTask to handle the asynchronous operations. 我的Login和Register类都依赖BackgroundTask来处理异步操作。

Here is the code for BackgroundTask. 这是BackgroundTask的代码。

public class BackgroundTask extends AsyncTask<String, Void, String> {
    AlertDialog mAlertDialog;
    Context context;
    private CheckTask mCheckTask;


    BackgroundTask(Context context, Boolean login, Boolean register) {
        this.context = context;
        mCheckTask = new CheckTask(login, register);
    }

    @Override
    protected String doInBackground(String... params) {

        String reg_url = "http://www.myegotest.com/register.php";
        String login_url = "http://www.myegotest.com/login.php";

        ////////////////////////REGISTER SCRIPT/////////////////////////////
        if (mCheckTask.getIsRegisterTask()) {
            String first_name = params[0];
            String last_name = params[1];
            String username = params[2];
            String password = params[3];
            try {
                //Set the URL we are working with
                URL url = new URL(reg_url);

                //Open a url connection and set params for the url connection
                HttpURLConnection LucasHttpURLConnection = (HttpURLConnection) url.openConnection();
                LucasHttpURLConnection.setRequestMethod("POST");
                LucasHttpURLConnection.setDoOutput(true);
                LucasHttpURLConnection.setDoInput(true);
                //Retrieve the output stream
                OutputStream os = LucasHttpURLConnection.getOutputStream();
                //Create a buffered writer to write the data to the output stream output stream.
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
                //Encode Data we are sending on the output stream
                String data = URLEncoder.encode("first_name", "UTF-8") + "=" + URLEncoder.encode(first_name, "UTF-8") + "&" +
                                      URLEncoder.encode("last_name", "UTF-8") + "=" + URLEncoder.encode(last_name, "UTF-8") + "&" +
                                      URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8") + "&" +
                                      URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
                //Write the data to the output stream, and close buffered writer
                bufferedWriter.write(data);
                bufferedWriter.flush();
                bufferedWriter.close();
                //Close output stream
                os.close();
                //InputStream to get response
                InputStream IS = LucasHttpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(IS, "iso-8859-1"));
                String response = "";
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    response += line;
                }
                bufferedReader.close();
                IS.close();
                //LucasHttpURLConnection.disconnect();
                return response;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //////////////////////////////////LOGIN SCRIPT/////////////////////////////////////////
        } else if (mCheckTask.getIsLoginTask()) {
            String username = params[0];
            String password = params[1];
            try {
                URL url = new URL(login_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8") + "&" +
                                      URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
                bufferedWriter.write(data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                //InputStream to get response
                InputStream IS = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(IS, "iso-8859-1"));
                String response = "";
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    response += line;
                }
                bufferedReader.close();
                IS.close();
                httpURLConnection.disconnect();
                return response;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPreExecute() {
        if (mCheckTask.getIsLoginTask()) {
            mAlertDialog = new AlertDialog.Builder(context).create();
            mAlertDialog.setTitle("Login Information... ");
        } else {
            mAlertDialog = new AlertDialog.Builder(context).create();
            mAlertDialog.setTitle("Register Information... ");
        }
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String result) {
        if (result.equals("Please choose another username")) {
            mAlertDialog.setMessage(result);
            mAlertDialog.setButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                }
            });
            mAlertDialog.show();

        } else if (result.equals("Registration success!")) {
            mAlertDialog.setMessage(result);
            mAlertDialog.setButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });
            mAlertDialog.show();
        } else {
            mAlertDialog.setMessage(result);
            mAlertDialog.show();
        }
    }
}

If the context reference you are holding from the constructor parameter is an activity you might consider changing the constructor signature and field type to Activity. 如果您从构造函数参数持有的上下文引用是活动,则可以考虑将构造函数签名和字段类型更改为“活动”。 From there you can call mActivity.finish(); 从那里可以调用mActivity.finish(); inside the dialog click listener. 在对话框中,单击侦听器。 This will cause the activity to close and step back by one on the back stack. 这将导致活动关闭并在后堆栈上退后一步。

You might also investigate using Activity.setResult(int, Intent) to deliver information back to the previous activity using onActivityResult(int, int, Intent) 您可能还会使用Activity.setResult(int, Intent)进行调查Activity.setResult(int, Intent)以使用onActivityResult(int, int, Intent)将信息传递回先前的活动

This can be handy for pre filling the login form when the registration activity closes. 当注册活动关闭时,这对于预先填写登录表单很方便。

http://developer.android.com/training/basics/intents/result.html http://developer.android.com/training/basics/intents/result.html

You can create a dispatch method where you check the currentuser with your database. 您可以创建一个调度方法,在此方法中,您可以用数据库检查当前用户。 I am using Parse, However you can use preferenceManager same as in example here Preference manager example here 我正在使用Parse,但是您可以使用与此处示例相同的preferenceManager此处的首选项管理器示例

Public class Dispatch extends ActionBarActivity {

  @Override
  public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    // Check if there is current user info
    if (ParseUser.getCurrentUser() != null) {
        // Start an intent for the logged in activity
        startActivity(new Intent(this, Home.class));
    } else {
        // Start and intent for the logged out activity
        startActivity(new Intent(this, login.class));
    }
}

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 登录成功后如何 go 回到 MainActivity? - How do I go back to MainActivity after login successful? Android Developer Studio成功登录后如何指向其他活动 - how to direct to another activity after successful login, Android Developer Studio Android登录活动模板中的注册过程 - Registration process in Android Login Activity Template 我如何从 MainActivity 的弹出登录转到另一个活动 - how do i go from pop up login of MainActivity to another activity 我该如何参加第三项活动? - How do I go to a third activity? 如何在Android Studio中使用SQLite编写注册和登录系统? - How can I write a registration & login system with SQLite in Android Studio? 成功登录后如何跳过重新启动应用程序中的登录活动....? - How to skip the login activity in relaunching app after a successful login....? Android帐户管理器,并在成功登录后启动其他活动 - Android Account Manager and starting another activity on successful login Android / PHP:登录成功但失败重定向到下一个活动 - Android / PHP: Login successful but Failed redirect to the next activity 成功登录android facebook应用程序并在新页面上获取注销按钮后如何开始新活动并隐藏登录页面 - How to start a new activity and hide login page after successful login in android facebook app and get logout button on new page
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM