Android 异步任务结束后启动意图
我为我的Android应用程序创建了一个登录活动。用户输入正确的凭据后,登录活动将切换到主页,但我不知道为什么我的代码不会切换,并且我的logcat中没有显示错误。清单也被正确定义 这是我的登录活动:Android 异步任务结束后启动意图,android,android-intent,android-asynctask,Android,Android Intent,Android Asynctask,我为我的Android应用程序创建了一个登录活动。用户输入正确的凭据后,登录活动将切换到主页,但我不知道为什么我的代码不会切换,并且我的logcat中没有显示错误。清单也被正确定义 这是我的登录活动: public class LoginEmployerActivity extends Activity { Button btnLoginEmployer; Button btnLinkToEmployerRegisterScreen; EditText inputEmail; EditT
public class LoginEmployerActivity extends Activity {
Button btnLoginEmployer;
Button btnLinkToEmployerRegisterScreen;
EditText inputEmail;
EditText inputPassword;
TextView loginErrorMsg;
TextView forgotPassword;
// JSON Response node names
private static String KEY_SUCCESS = "success";
private static String KEY_ERROR = "error";
private static String KEY_ERROR_MSG = "error_msg";
private static String KEY_UID = "uid";
private static String KEY_NAME = "name";
private static String KEY_CNAME = "cname";
private static String KEY_EMAIL = "email";
private static String KEY_CREATED_AT = "created_at";
private ProgressDialog pDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_employer);
// Importing all assets like buttons, text fields
inputEmail = (EditText) findViewById(R.id.loginEmployerEmail);
inputPassword = (EditText) findViewById(R.id.loginEmployerPassword);
btnLoginEmployer = (Button) findViewById(R.id.btnLoginEmployer);
btnLinkToEmployerRegisterScreen = (Button) findViewById(R.id.btnLinkToEmployerRegisterScreen);
loginErrorMsg = (TextView) findViewById(R.id.login_error);
forgotPassword = (TextView) findViewById(R.id.link_to_forgetPassword);
// Login button Click Event
btnLoginEmployer.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// Checking for server respond
new LoginEmployer().execute();
}
}
});
// Link to Register Screen
btnLinkToEmployerRegisterScreen
.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(),
RegisterEmployerActivity.class);
startActivity(i);
finish();
}
});
// Link to forgot password link
forgotPassword.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// Switching to forgot password screen
Intent i = new Intent(getApplicationContext(),
ForgotPasswordEmployerActivity.class);
startActivity(i);
}
});
}
// Background ASYNC Task to login by making HTTP Request
class LoginEmployer extends AsyncTask<String, String, String> {
// Before starting background thread Show Progress Dialog
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(LoginEmployerActivity.this);
pDialog.setMessage("Authenticating...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
// Checking login in background
protected String doInBackground(String... params) {
runOnUiThread(new Runnable() {
public void run() {
String email = inputEmail.getText().toString();
String password = inputPassword.getText().toString();
EmployerFunctions employerFunctions = new EmployerFunctions();
JSONObject json = employerFunctions.loginUser(email,
password);
// check for login response
try {
if (json.getString(KEY_SUCCESS) != null) {
loginErrorMsg.setText("");
String res = json.getString(KEY_SUCCESS);
if (Integer.parseInt(res) == 1) {
// user successfully logged in
// Store user details in SQLite Database
DatabaseHandlerEmployer dbe = new DatabaseHandlerEmployer(
getApplicationContext());
JSONObject json_user = json
.getJSONObject("user");
// Clear all previous data in database
employerFunctions
.logoutUser(getApplicationContext());
dbe.addUser(
json_user.getString(KEY_NAME),
//json_user.getString(KEY_CNAME),
json_user.getString(KEY_EMAIL),
json.getString(KEY_UID),
json_user.getString(KEY_CREATED_AT));
// Launch Employer homePage Screen
Intent homepage = new Intent(
getApplicationContext(),
HomepageEmployerActivity.class);
// Close all views before launching Employer
// homePage
homepage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homepage);
// Close Login Screen
finish();
} else {
// Error in login
loginErrorMsg
.setText("Invalid username/password");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
return null;
}
// After completing background task Dismiss the progress dialog
protected void onPostExecute(String file_url) {
// dismiss the dialog once done
pDialog.dismiss();
}
}
}
公共类LoginEmployerActivity扩展活动{
按钮BTN工程师;
按钮btnLinkToEmployerRegisterScreen;
编辑文本输入电子邮件;
编辑文本输入密码;
TextView loginErrorMsg;
文本视图放弃密码;
//JSON响应节点名称
私有静态字符串密钥\u SUCCESS=“SUCCESS”;
私有静态字符串密钥\u ERROR=“ERROR”;
私有静态字符串密钥\u ERROR\u MSG=“ERROR\u MSG”;
私有静态字符串密钥\u UID=“UID”;
私有静态字符串密钥\u NAME=“NAME”;
私有静态字符串密钥\u CNAME=“CNAME”;
私有静态字符串密钥\u EMAIL=“EMAIL”;
私有静态字符串密钥\u CREATED\u AT=“CREATED\u AT”;
私人对话;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login\u雇主);
//导入按钮、文本字段等所有资源
inputEmail=(EditText)findViewById(R.id.loginEmployerEmail);
inputPassword=(EditText)findViewById(R.id.loginEmployerPassword);
btnEngineemployer=(按钮)findViewById(R.id.btnEngineemployer);
btnLinkToEmployerRegisterScreen=(按钮)findViewById(R.id.btnLinkToEmployerRegisterScreen);
loginErrorMsg=(TextView)findViewById(R.id.login\u错误);
forgotPassword=(TextView)findViewById(R.id.link\u to\u forgetPassword);
//登录按钮点击事件
btnlogenemployer.setOnClickListener(新视图.OnClickListener(){
public void onClick(视图){
//检查服务器响应
新的LoginEmployer().execute();
}
}
});
//链接到注册屏幕
btnLinkToEmployerRegisterScreen
.setOnClickListener(新视图.OnClickListener(){
public void onClick(视图){
意图i=新意图(getApplicationContext(),
RegisterEmployerActivity.class);
星触觉(i);
完成();
}
});
//链接到忘记密码链接
forgotPassword.setOnClickListener(新视图.OnClickListener(){
public void onClick(视图){
//切换到忘记密码屏幕
意图i=新意图(getApplicationContext(),
ForgotPasswordEmployerActivity.class);
星触觉(i);
}
});
}
//通过发出HTTP请求登录的后台异步任务
类LoginEmployer扩展异步任务{
//在启动后台线程显示进度对话框之前
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=新建进度对话框(LoginEmployerActivity.this);
设置消息(“正在验证…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
//在后台检查登录
受保护的字符串doInBackground(字符串…参数){
runOnUiThread(新的Runnable(){
public void run(){
字符串email=inputEmail.getText().toString();
字符串密码=inputPassword.getText().toString();
EmployerFunctions EmployerFunctions=新EmployerFunctions();
JSONObject json=employerFunctions.loginUser(电子邮件,
密码);
//检查登录响应
试试{
if(json.getString(KEY_SUCCESS)!=null){
loginErrorMsg.setText(“”);
String res=json.getString(KEY_SUCCESS);
如果(Integer.parseInt(res)==1{
//用户已成功登录
//在SQLite数据库中存储用户详细信息
DatabaseHandlerEmployer dbe=新的DatabaseHandlerEmployer(
getApplicationContext());
JSONObject json_user=json
.getJSONObject(“用户”);
//清除数据库中以前的所有数据
雇员职能
.logoutUser(getApplicationContext());
dbe.addUser(
json_user.getString(KEY_NAME),
//json_user.getString(KEY_CNAME),
json_user.getString(KEY_电子邮件),
json.getString(KEY_UID),
json_user.getString(KEY_CREATED_AT));
//启动雇主主页屏幕
意向主页=新意向(
getApplicationContext(),
主页EmployeerActivity.class);
//启动前关闭所有视图
//主页
主页。添加标志(意图。标志\活动\清除\顶部);
startActivity(主页);
//关闭登录屏幕
完成();
}否则{
//登录错误
登录者
.setText(“无效用户名/密码”);
}
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
});
返回null;
}
//完成后台任务后,关闭“进度”对话框
受保护的void onPostExecute(字符串文件\u url){
//完成后关闭对话框
pDialog.disclose();
}
}
}
将INTENT语句移动到onPostExecute方法后编辑的代码
public class LoginEmployerActivity extends Activity {
Button btnLoginEmployer;
Button btnLinkToEmployerRegisterScreen;
EditText inputEmail;
EditText inputPassword;
TextView loginErrorMsg;
TextView forgotPassword;
// JSON Response node names
private static String KEY_SUCCESS = "success";
private static String KEY_ERROR = "error";
private static String KEY_ERROR_MSG = "error_msg";
private static String KEY_UID = "uid";
private static String KEY_NAME = "name";
private static String KEY_CNAME = "cname";
private static String KEY_EMAIL = "email";
private static String KEY_CREATED_AT = "created_at";
private ProgressDialog pDialog;
boolean loginVerify= false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_employer);
// Importing all assets like buttons, text fields
inputEmail = (EditText) findViewById(R.id.loginEmployerEmail);
inputPassword = (EditText) findViewById(R.id.loginEmployerPassword);
btnLoginEmployer = (Button) findViewById(R.id.btnLoginEmployer);
btnLinkToEmployerRegisterScreen = (Button) findViewById(R.id.btnLinkToEmployerRegisterScreen);
loginErrorMsg = (TextView) findViewById(R.id.login_error);
forgotPassword = (TextView) findViewById(R.id.link_to_forgetPassword);
// Login button Click Event
btnLoginEmployer.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// Checking for server respond
new LoginEmployer().execute();
}
}
});
// Link to Register Screen
btnLinkToEmployerRegisterScreen
.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(),
RegisterEmployerActivity.class);
startActivity(i);
finish();
}
});
// Link to forgot password link
forgotPassword.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// Switching to forgot password screen
Intent i = new Intent(getApplicationContext(),
ForgotPasswordEmployerActivity.class);
startActivity(i);
}
});
}
// Background ASYNC Task to login by making HTTP Request
class LoginEmployer extends AsyncTask<String, String, String> {
// Before starting background thread Show Progress Dialog
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(LoginEmployerActivity.this);
pDialog.setMessage("Authenticating...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
// Checking login in background
protected String doInBackground(String... params) {
runOnUiThread(new Runnable() {
public void run() {
String email = inputEmail.getText().toString();
String password = inputPassword.getText().toString();
EmployerFunctions employerFunctions = new EmployerFunctions();
JSONObject json = employerFunctions.loginUser(email,
password);
// check for login response
try {
if (json.getString(KEY_SUCCESS) != null) {
loginErrorMsg.setText("");
String res = json.getString(KEY_SUCCESS);
if (Integer.parseInt(res) == 1) {
loginVerify = true;
// user successfully logged in
// Store user details in SQLite Database
DatabaseHandlerEmployer dbe = new DatabaseHandlerEmployer(
getApplicationContext());
JSONObject json_user = json
.getJSONObject("user");
// Clear all previous data in database
employerFunctions
.logoutUser(getApplicationContext());
dbe.addUser(
json_user.getString(KEY_NAME),
json_user.getString(KEY_CNAME),
json_user.getString(KEY_EMAIL),
json.getString(KEY_UID),
json_user.getString(KEY_CREATED_AT));
} else {
// Error in login
loginErrorMsg
.setText("Invalid username/password");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
return null;
}
// After completing background task Dismiss the progress dialog
protected void onPostExecute(String file_url) {
// dismiss the dialog once done
pDialog.dismiss();
if ( loginVerify == true )
{
// Launch Employer homePage Screen
Intent homepage = new Intent(getApplicationContext(),
HomepageEmployerActivity.class);
// Close all views before launching Employer
// homePage
homepage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homepage);
// Close Login Screen
finish();
}
}
}
public类LoginEmployerActivity扩展活动{
按钮BTN工程师;
按钮btnLinkToEmployerRegisterScreen;
编辑文本输入电子邮件;
E
protected void onPostExecute(String file_url) {
// dismiss the dialog once done // Intent Code Missing.
pDialog.dismiss();
Intent homepage = new Intent( getApplicationContext(), HomepageEmployerActivity.class);
homepage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homepage);
if(loginVerifed == true)
{
Intent homepage = new Intent(getApplicationContext(),HomepageEmployerActivity.class
homepage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homepage);
finish();
}
// Background ASYNC Task to login by making HTTP Request
class LoginEmployer extends AsyncTask<String, String, String> {
boolean validUser = false;
if (Integer.parseInt(res) == 1) {
// user successfully logged in
// Store user details in SQLite Database
validUser = true; //set valid to true
protected void onPostExecute(String file_url) {
// dismiss the dialog once done
pDialog.dismiss();
if ( validUser )
{
Intent homepage = new Intent( LoginEmployerActivity.this,
HomepageEmployerActivity.class);
// Close all views before launching Employer
// homePage
homepage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homepage);
}