[英]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.