Android / PHP:登录成功但失败重定向到下一个活动



我是安卓编程的新手。目前,我开发需要登录的应用程序。目前,登录成功。下面是代码:

主要活动.JAVA

private void userLogin() {
//first getting the values
final String badgeid = etBadgeid.getText().toString();
final String pwd = etPassword.getText().toString();
//validating inputs
if (TextUtils.isEmpty(badgeid)) {
etBadgeid.setError("Please enter your badgeid");
etBadgeid.requestFocus();
return;
}
if (TextUtils.isEmpty(pwd)) {
etPassword.setError("Please enter your password");
etPassword.requestFocus();
return;
}
//if everything is fine
StringRequest stringRequest = new StringRequest(Request.Method.POST, URLs.URL_LOGIN,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("onPostExecute","response is: "+response);
try {
//converting response to json object
JSONObject obj = new JSONObject(response);
//if no error in response
if (!obj.getBoolean("error")) {
Toast.makeText(getApplicationContext(), obj.getString("message"), Toast.LENGTH_SHORT).show();
//getting the user from the response
JSONObject userJson = obj.getJSONObject("user");
//creating a new user object
User user = new User(
userJson.getString("badgeid"),
userJson.getString("email"),
userJson.getString("fullname"),
userJson.getInt("roles_id"),
userJson.getInt("team_id")
);
//storing the user in shared preferences
SharedPrefManager.getInstance(getApplicationContext()).userLogin(user);
//starting the profile activity
finish();
startActivity(new Intent(getApplicationContext(), Home.class));
} else {
Toast.makeText(getApplicationContext(), obj.getString("message"), Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("badgeid", badgeid);
params.put("pwd", pwd);
return params;
}
};
RequestQueue requestQueue= Volley.newRequestQueue(getApplicationContext());
requestQueue.add(stringRequest);
}

URL_LOGIN (菲律宾比索(

<?php 
require_once '../config/configPDO.php';
$response = array();
if(isTheseParametersAvailable(array('badgeid', 'pwd'))){
$badgeid = $_POST['badgeid'];
$pwd = $_POST['pwd'];
$stmt = $conn->prepare("SELECT badgeid, email, fullname, roles_id, team_id FROM ot_users WHERE badgeid = :badgeid AND pwd = :pwd AND roles_id = 7 AND team_id <> 1");
$stmt->bindParam(':badgeid',$badgeid,PDO::PARAM_STR);
$stmt->bindParam(':pwd',$pwd,PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($result) {
$response['error'] = false; 
$response['message'] = 'Login successfull'; 
$response['user'] = $result;  
}else{
$response['error'] = false; 
$response['message'] = 'Invalid username or password';
}
}
echo json_encode($response);
function isTheseParametersAvailable($params){
foreach($params as $param){
if(!isset($_POST[$param])){
return false; 
}
}
return true; 
}
?>

然后,我想在从数据库中检索数据时使用 Web 服务 (url(。下面是 php 代码

URL_LOGIN (菲律宾比索(

<?php 
require_once '../config/configPDO.php';
$response = array();
if(isTheseParametersAvailable(array('badgeid', 'pwd'))){
$badgeid = $_POST['badgeid'];
$pwd = $_POST['pwd'];
$url = "http://172.20.0.45/TGWebService/TGWebService.asmx/ot_displayUser?badgeid=$badgeid&pwd=$pwd";
$data = file_get_contents($url);
$json = json_decode($data);
$result = $json->otUserList;
if ($result) {
$response['error'] = false; 
$response['message'] = 'Login successfull'; 
$response['user'] = $result;  
}else{
$response['error'] = false; 
$response['message'] = 'Invalid username or password';
}
}
echo json_encode($response);
function isTheseParametersAvailable($params){
foreach($params as $param){
if(!isset($_POST[$param])){
return false; 
}
}
return true; 
}
?>

当我使用此代码时,它将弹出"登录成功",但它无法重定向到下一页(主页.JAVA(。谁能知道问题出在哪里?

您在startActivity(new Intent(MainActivity.this, Home.class));之前调用finish()方法。finish()用于从堆栈中删除当前活动。您总是必须在导航到另一个活动后调用。

如果您认为这是一个正确的答案,请更正它。

已更新您的代码,因此请复制以下代码:

主活动.java

private void userLogin() {
//first getting the values
final String badgeid = etBadgeid.getText().toString();
final String pwd = etPassword.getText().toString();
//validating inputs
if (TextUtils.isEmpty(badgeid)) {
etBadgeid.setError("Please enter your badgeid");
etBadgeid.requestFocus();
return;
}
if (TextUtils.isEmpty(pwd)) {
etPassword.setError("Please enter your password");
etPassword.requestFocus();
return;
}
//if everything is fine
StringRequest stringRequest = new StringRequest(Request.Method.POST, URLs.URL_LOGIN,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("onPostExecute","response is: "+response);
try {
//converting response to json object
JSONObject obj = new JSONObject(response);
//if no error in response
if (!obj.getBoolean("error")) {
Toast.makeText(MainActivity.this, obj.getString("message"), Toast.LENGTH_SHORT).show();
//getting the user from the response
JSONObject userJson = obj.getJSONObject("user");
//creating a new user object
User user = new User(
userJson.getString("badgeid"),
userJson.getString("email"),
userJson.getString("fullname"),
userJson.getInt("roles_id"),
userJson.getInt("team_id")
);
//storing the user in shared preferences
SharedPrefManager.getInstance(getApplicationContext()).userLogin(user);
//starting the profile activity
startActivity(new Intent(MainActivity.this, Home.class));
finish();  //it will remove current activity from activity stack
} else {
Toast.makeText(MainActivity.this, obj.getString("message"), Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("badgeid", badgeid);
params.put("pwd", pwd);
return params;
}
};
RequestQueue requestQueue= Volley.newRequestQueue(MainActivity.this);
requestQueue.add(stringRequest);
}

最新更新