Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Aplicativo fecha na tela de Login - Android Studio

Boa tarde, Estou criando um aplicativo e estou com problema para desenvolver a tela de login. Eu até consegui fazer com que a tela funcionasse de forma correta, o problema esta no momento em que o usuário erra o "Login" e "Senha", pois assim que detecta o erro o aplicativo fecha. Aqui esta o código:


public class login extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        //pegar as variaveis de login e senha
        final EditText Lusuario = findViewById(R.id.Lusuario);
        final EditText Lsenha =  findViewById(R.id.Lsenha);
        final TextView tResposta = findViewById(R.id.txtResposta);

        Button Lbutton = (Button) findViewById(R.id.Lbutton);
        Lbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(Lusuario.length() > 0 && !Lusuario.getText().toString().equals("") && Lsenha.length() > 0 && !Lsenha.getText().toString().equals("")){
                    HTTPLogin service = new HTTPLogin(Lusuario.getText().toString(), Lsenha.getText().toString());
                    try {
                        Usuario retorno = service.execute().get();
                        if(!retorno.getUsuarioLogin().equals("") && !retorno.getUsuarioNome().equals("")){
                            //chamar nova activity
                            Intent Logar = new Intent(login.this, MainActivity.class);
                           // Logar.putExtra("Usuario", retorno);
                            startActivity(Logar);
                        }
                        else{
                            tResposta.setText("Login ou senha inválidos!");
                        }
                    } catch (ExecutionException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }

    //metodo para exibir mensagem na tela
    private void alert(String s){
        Toast.makeText(this, s, Toast.LENGTH_LONG).show();
    }

}

Como disse, quando o retorno é positivo ele vai para a nova activity normalmente, porem quando usuário ou senha estão errado o aplicativo simplesmente fecha. Desde já agradeço a quem puder ajudar, dar uma dica.

Atenciosamente,

2 respostas

Wesley

Posta o log, fica mais fácil pra identificar o problema

solução!

Olá Alessandro, obrigado por responder. O log do aplicativo mostra isso.

D/OpenGLRenderer: HWUI GL Pipeline
I/Adreno: QUALCOMM build                   : 368094a, I26dffed9a4
    Build Date                       : 12/03/17
    OpenGL ES Shader Compiler Version: EV031.22.00.01
    Local Branch                     : 
    Remote Branch                    : quic/gfx-adreno.lnx.1.9.r3-rel
    Remote Branch                    : NONE
    Reconstruct Branch               : NOTHING
I/vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.msm8953.so from the current namespace instead.
I/Adreno: PFP: 0x005ff087, ME: 0x005ff063
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 2
I/vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.msm8953.so from the current namespace instead.
I/zygote: Do partial code cache collection, code=30KB, data=30KB
I/zygote: After code cache collection, code=30KB, data=30KB
    Increasing code cache capacity to 128KB
D/NetworkSecurityConfig: No Network Security Config specified, using platform default
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.wqueiroz.salao_beleza, PID: 18973
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
        at com.example.wqueiroz.salao_beleza.login$1.onClick(login.java:37)
        at android.view.View.performClick(View.java:6259)
        at android.view.View$PerformClick.run(View.java:24732)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6592)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
Disconnected from the target VM, address: 'localhost:8602', transport: 'socket'

Acredito que seja referente a linha:

if(!retorno.getUsuarioLogin().equals("") && !retorno.getUsuarioNome().equals("")){
                            //chamar nova activity
                            Intent Logar = new Intent(login.this, MainActivity.class);
                           // Logar.putExtra("Usuario", retorno);
                            startActivity(Logar);
                        }

Como posso verificar se o "getUsuarioLogin()" é igual a nulo?

Obs: era só comparar se retorno.getUsuarioNome() == null que rsrs. Que vergonha. Obrigado Alessadro por lembrar do log, como não mexo com Android Studio não sei usar muito bem a ferramenta.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software