0

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!"

Both my Login and Register classes are relying on BackgroundTask to handle the asynchronous operations.

Here is the code for 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();
        }
    }
}
Makoto
  • 104,088
  • 27
  • 192
  • 230
Lucas Senechal
  • 300
  • 1
  • 3
  • 15

2 Answers2

0

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(); 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)

This can be handy for pre filling the login form when the registration activity closes.

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

TrevJonez
  • 949
  • 8
  • 12
0

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

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

}
Community
  • 1
  • 1
Anasbzr
  • 59
  • 2
  • 10