Java 登录活动转到下一个活动,即使条件不为真

Java 登录活动转到下一个活动,即使条件不为真,java,android,android-intent,android-volley,Java,Android,Android Intent,Android Volley,这是我的代码,在其中我尝试移动到下一个活动,即仪表板在用户经过身份验证后,它工作正常,但即使凭据不正确或错误,它也会移动到下一个活动 我已经写下了“如果有其他条件,则移动到下一个活动,而不移动到下一个活动…”。。。。 但它仍然会转移到下一个活动我不知道为什么会发生这种情况 MainActivity.java package com.example.demo; import androidx.appcompat.app.AppCompatActivity; import android.con

这是我的代码,在其中我尝试移动到下一个活动,即仪表板在用户经过身份验证后,它工作正常,但即使凭据不正确或错误,它也会移动到下一个活动

我已经写下了“如果有其他条件,则移动到下一个活动,而不移动到下一个活动…”。。。。 但它仍然会转移到下一个活动我不知道为什么会发生这种情况

MainActivity.java

package com.example.demo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    EditText etusername, etpassword;
    String username, password;
    FloatingActionButton loginbtn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etusername = findViewById(R.id.etemail);
        etpassword = findViewById(R.id.etpw);
        loginbtn=findViewById(R.id.floatingloginButton);
        loginbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("Output 1","Button clicked");
                loginverify();
            }
        });

    }

    private void loginverify() {
        username = etusername.getText().toString().trim();
        password = etpassword.getText().toString().trim();

        Log.d("Output 2","login verify Function called");
        if (username.isEmpty()) {
            Toast.makeText(MainActivity.this, "Username cannnot be empty", Toast.LENGTH_SHORT).show();
            Log.d("Output 3","if con 1");

            return;
        } else if (password.isEmpty()) {
            Toast.makeText(MainActivity.this, "Password cannnot be empty", Toast.LENGTH_SHORT).show();
            Log.d("Output 3","if con 2");
            return;
        }else{
            Log.d("Output 5","inside else");
            StringRequest request= new StringRequest(Request.Method.POST, "https://**url**/login.php", new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                   // Log.d("Output 4",response);
                    if(!response.equalsIgnoreCase("Login Failed.......Try Again..")){
                        Log.d("Output 6","login failed");
     

               Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(getApplicationContext(),Dashboard.class));
                 }else{
                    Log.d("Output 6","login passed");
                    Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
                   return;
                }

             //   Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT).show();
              //  startActivity(new Intent(getApplicationContext(),Dashboard.class));
                //Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT).show();

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
                Log.d("Response error",error.getMessage().toString());
            }
        }
        ){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> params=new HashMap<String, String>();
            params.put("login_name",username);
            params.put("login_pass",password);
                return params;
            }
        };
        RequestQueue requestQueue= Volley.newRequestQueue(MainActivity.this);
        requestQueue.add(request);
    }

}
package com.example.demo;
导入androidx.appcompat.app.appcompat活动;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.EditText;
导入android.widget.Toast;
导入com.android.volley.AuthFailureError;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.StringRequest;
导入com.android.volley.toolbox.volley;
导入com.google.android.material.floatingactionbutton.floatingactionbutton;
导入java.util.HashMap;
导入java.util.Map;
公共类MainActivity扩展了AppCompatActivity{
编辑文本etusername,etpassword;
字符串用户名、密码;
浮动操作按钮登录;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etusername=findviewbyd(R.id.etemail);
etpassword=findviewbyd(R.id.etpw);
loginbtn=findviewbyd(R.id.floatingloginButton);
loginbtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Log.d(“输出1”,“点击按钮”);
登录验证();
}
});
}
私有void loginverify(){
username=etusername.getText().toString().trim();
password=etpassword.getText().toString().trim();
d(“输出2”,“调用登录验证函数”);
if(username.isEmpty()){
Toast.makeText(MainActivity.this,“用户名不能为空”,Toast.LENGTH_SHORT.show();
日志d(“输出3”,“如果con 1”);
返回;
}else if(password.isEmpty()){
Toast.makeText(MainActivity.this,“密码不能为空”,Toast.LENGTH_SHORT.show();
日志d(“输出3”,“如果con 2”);
返回;
}否则{
日志d(“输出5”,“内部其他”);
StringRequest=newStringRequest(request.Method.POST,“https://**url**/login.php”,new Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
//Log.d(“输出4”,响应);
如果(!response.equalsIgnoreCase(“登录失败…….重试”)){
Log.d(“输出6”,“登录失败”);
Toast.makeText(getApplicationContext(),response,Toast.LENGTH_SHORT.show();
startActivity(新意图(getApplicationContext(),Dashboard.class));
}否则{
Log.d(“输出6”,“登录通过”);
Toast.makeText(getApplicationContext(),response,Toast.LENGTH_SHORT.show();
返回;
}
//Toast.makeText(MainActivity.this,response,Toast.LENGTH_SHORT).show();
//startActivity(新意图(getApplicationContext(),Dashboard.class));
//Toast.makeText(MainActivity.this,response,Toast.LENGTH_SHORT).show();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(MainActivity.this,error.getMessage(),Toast.LENGTH_SHORT.show();
Log.d(“响应错误”,error.getMessage().toString());
}
}
){
@凌驾
受保护的映射getParams()引发AuthFailureError{
Map params=新的HashMap();
参数put(“登录名”,用户名);
参数put(“登录密码”);
返回参数;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(MainActivity.this);
添加(请求);
}
}
}

下面是我的php代码。。。抱歉,代码太弱了

<?php  
 require "../dbcn.php";  
 $user_name = $_POST["login_name"];  
 $user_pass =  $_POST["login_pass"];  
 $sql_query = "select Firstname,Lastname from users where emailid like '$user_name' and password like '$user_pass';";  
 $result = mysqli_query($db_conx,$sql_query);  
 if(mysqli_num_rows($result) >0 )  
 {  
 $row = mysqli_fetch_assoc($result);  
 $name =$row["Firstname"]." ".$row["Lastname"];  
 echo "Login Success..Welcome ".$name;  
 }  
 else  
 {   
 echo "Login Failed.......Try Again..";  
 }  
 ?>  

我建议您在onResponse方法中使用JSON格式,并使用equals()而不是equalsIgnoreCase。onResponse方法需要一些时间,具体取决于您的响应数据和internet速度。如果您在响应中使用布尔值,这是最好的条件。

比较
String
结果是非常非常错误的方法。。。除此之外,这个
if
也是非常不合适的

if(!response.equalsIgnoreCase("Login Failed.......Try Again..")){

}
<> P>>代码> String < /C> >将打开下一个<代码>活动< /代码>,例如当你在服务器端改变一个字符时,或者中间的连接断开,你只会得到<<代码>字符串< /代码>的一半…(理论上)

为了让用户进入某个隐藏/限制区域,您应该始终使用积极、明确的条件,而不是相反的否定。。。尝试使用
if(response.startsWith(“Login Success”)
,但仍然比较
String
s不是个好主意。。。(这就是为什么你投了反对票)


考虑使用一些标准来格式化文本,如XML或JSON,或者只返回一些
int
代码,例如
0
用于积极登录、
-1
密码不匹配、
-2
未找到用户等,这取决于您的目的。当然,作为登录条件,如果(结果==0)
,则使用
,而不是
所有其他可能的代码…

现在是开始使用调试器的时候。但是您在
OnResponse
中错误地使用了
Log
;如果
@HamidSj我正在使用n,则在
的第一个作用域中记录失败