繁体   English   中英

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

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

服务器端一切正常。 我的问题是,如果HTTP响应为“注册成功!”,我不确定如何返回登录页面。

我的Login和Register类都依赖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();
        }
    }
}

如果您从构造函数参数持有的上下文引用是活动,则可以考虑将构造函数签名和字段类型更改为“活动”。 从那里可以调用mActivity.finish(); 在对话框中,单击侦听器。 这将导致活动关闭并在后堆栈上退后一步。

您可能还会使用Activity.setResult(int, Intent)进行调查Activity.setResult(int, Intent)以使用onActivityResult(int, int, Intent)将信息传递回先前的活动

当注册活动关闭时,这对于预先填写登录表单很方便。

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

您可以创建一个调度方法,在此方法中,您可以用数据库检查当前用户。 我正在使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM