GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Minha Activity fecha ao clicar no botão

android
Tags: #<Tag:0x00007f68aa164cb0>

#1

Estou com problemas no meu aplicativo de cadastro de clientes. Eu tenho uma MainActivity com campos de Login e Senha, também dois botões. O primeiro para logar e o segundo para cadastrar, caso não tenha conta. Quando eu clico no botão btncadastrar, “não possui uma conta?”, o aplicativo fecha ao invés de ir para CadastroActivity. Como faço para corrigir isso?

Eis o código da MainActivity:

public class MainActivity extends AppCompatActivity {

private EditText et_login, et_senha;
private Button btn_cadastrar;
private Button btn_logar;

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


    et_login = (EditText) findViewById(R.id.et_login);
    et_senha = (EditText) findViewById(R.id.et_senha);
    btn_cadastrar = (Button) findViewById(R.id.btn_cadastrar);
    btn_logar = (Button) findViewById(R.id.btn_logar);

    btn_logar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            et_login.getText();
            et_senha.getText();

            /*Intent i = new Intent(MainActivity.this, CadastroActivity.class);
            startActivity(i);  */

            if (et_login.getText().length() == 0 || et_senha.getText().length() == 0) {
                Toast.makeText(getApplication(),
                        "Os campos de login e senha são obrigatórios",
                        Toast.LENGTH_LONG).show();

            } else if (et_login.getText().length() < 0 || et_senha.getText().length() < 0) {
                Toast.makeText(getApplication(),
                        "Os campos de login e senha são inválidos. Digite novamente!",
                        Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplication(),
                        "" + et_login.getText().toString() + "!",
                        Toast.LENGTH_LONG).show();
                et_login.setText("");
                et_senha.setText("");
            }
        }
        });

                btn_cadastrar.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent i = new Intent(MainActivity.this, CadastroActivity.class);
                        startActivity(i);


                    }

            } );

        }
}

#2

Olá Rafaela,

É melhor você postar o erro que aparece em vermelho no seu LogCat, fica mais fácil pra te ajudar.

Mas provavelmente o erro está ocorrendo porque a Activity não está registrada no seu AndroidManifest.xml

Exemplo:

<activity
   android:name=".MainActivity" />

#3

O arquivo Manifest está assim:

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".CadastroActivity"></activity>
</application>

#4

Aparentemente o seu AndroidManifest.xml está correto

Quando der o erro que seu aplicativo fecha, aparece aquela mensagem em vermelho no LogCat, copia ela quando aparecer e posta aqui.


#5

Coloquei para depurar, veja:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: android.usuario.meuprojeto, PID: 2924
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{android.usuario.meuprojeto/android.usuario.meuprojeto.CadastroActivity}: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.view.Window$Callback android.view.Window.getCallback()’ on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.view.Window$Callback android.view.Window.getCallback()’ on a null object reference
at android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:120)
at android.support.v7.app.AppCompatDelegateImplV9.(AppCompatDelegateImplV9.java:151)
at android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:31)
at android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:55)
at android.support.v7.app.AppCompatDelegateImplV23.(AppCompatDelegateImplV23.java:33)
at android.support.v7.app.AppCompatDelegateImplN.(AppCompatDelegateImplN.java:33)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190)
at android.usuario.meuprojeto.CadastroActivity.(CadastroActivity.java:12)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2538)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Disconnected from the target VM, address: ‘localhost:8603’, transport: ‘socket’


#6

Parece que tem alguma coisa nula lá na sua classe CadastroActivity.

java.lang.NullPointerException: Attempt to invoke virtual method ‘android.view.Window$Callback android.view.Window.getCallback()’

Vou ter q ser “chato” e pedir pra vc postar o código Java da sua CadastroActivity kkkkkkk

Tem alguma coisa errada lá que está passando despercebido por vc


#7

Leonardo, ainda aparece esse erro também no AVD: E/EGL_emulation: tid 2619: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)

eu configurei o AVD para hardware GLSE 2.0 e nada adiantou. Mudei também para software GLSE 2.0 e nada


#8

public class CadastroActivity extends MainActivity {

final EditText et_nome = (EditText) findViewById(R.id.et_nome);
final EditText et_cpf = (EditText) findViewById(R.id.et_cpf);
final EditText et_endereco = (EditText) findViewById(R.id.et_endereco);
final EditText et_idade = (EditText) findViewById(R.id.et_idade);
final EditText et_email = (EditText) findViewById(R.id.et_email);
final EditText et_senha = (EditText) findViewById(R.id.et_senha);
final Button btn_cadastrar = (Button) findViewById(R.id.btn_cadastrar);

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



    btn_cadastrar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            et_nome.getText();
            et_cpf.getText();
            et_endereco.getText();
            et_idade.getText();
            et_email.getText();
            et_senha.getText();

            if(et_nome.getText().length()==0 || et_cpf.getText().length()==0 || et_endereco.getText().length()==0 ||
                    et_idade.getText().length()==0 || et_email.getText().length()==0 || et_senha.getText().length()==0 &&
                    et_senha.getText().length()<4){
                Toast.makeText(getApplication(),
                        "Todos os campos devem ser preenchidos corretamente.",
                        Toast.LENGTH_LONG).show();

        }

        }
    });
}

}


#9

Coloca isso aqui dentro do onCreate e tira lá de cima:

final EditText et_nome = (EditText) findViewById(R.id.et_nome);
final EditText et_cpf = (EditText) findViewById(R.id.et_cpf);
final EditText et_endereco = (EditText) findViewById(R.id.et_endereco);
final EditText et_idade = (EditText) findViewById(R.id.et_idade);
final EditText et_email = (EditText) findViewById(R.id.et_email);
final EditText et_senha = (EditText) findViewById(R.id.et_senha);
final Button btn_cadastrar = (Button) findViewById(R.id.btn_cadastrar);

Pode até tirar os final da frente de cada um

Acredito q vai resolver


#10

O erro está acontecendo, porque vc está mandando o Java declarar os componentes que tem no layout, antes mesmo de declarar o layout

setContentView(R.layout.activity_cadastro);

Então vai estar tudo nulo mesmo, o Java é “burro” kkkkkkkk


#11

Outra coisa, você está extendendo MainActivity, ta errado isso.

Troca pra AppCompatActivity, ficando assim:

public class CadastroActivity extends AppCompatActivity {


#12

eu coloquei os componentes dentro do OnCreate e antes do setContentView(R.layout.activity_cadastro) e fica dando erro la embaixo dentro do onlickListener, fica em vermelho os componentes dentro do botão. E colocando os componentes depois do setContentView mas dentro do OnCreate, continua em vermelho os editTexts no OnlickListener. Deixando o final ele fica ok


#13

mas quando rodo o programa continua dando erro, ele fecha ao clicar no botão para ir para a tela de cadastro


#14

Deixa a CadastroActivity dessa forma aqui:

public class CadastroActivity extends AppCompatActivity {

    private EditText et_nome;
    private EditText et_cpf;
    private EditText et_endereco;
    private EditText et_idade;
    private EditText et_email;
    private EditText et_senha;
    private Button btn_cadastrar;

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

        et_nome = (EditText) findViewById(R.id.et_nome);
        et_cpf = (EditText) findViewById(R.id.et_cpf);
        et_endereco = (EditText) findViewById(R.id.et_endereco);
        et_idade = (EditText) findViewById(R.id.et_idade);
        et_email = (EditText) findViewById(R.id.et_email);
        et_senha = (EditText) findViewById(R.id.et_senha);
        btn_cadastrar = (Button) findViewById(R.id.btn_cadastrar);

        btn_cadastrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (et_nome.getText().length() == 0 || et_cpf.getText().length() == 0 || et_endereco.getText().length() == 0 ||
                        et_idade.getText().length() == 0 || et_email.getText().length() == 0 || et_senha.getText().length() == 0 &&
                        et_senha.getText().length() < 4) {
                    Toast.makeText(getApplication(),
                            "Todos os campos devem ser preenchidos corretamente.",
                            Toast.LENGTH_LONG).show();

                }

            }
        });
    }
}

O que eu fiz?

  1. Troquei a extensão pra AppCompatActivity
  2. Declarei os nomes das variaveis antes do método onCreate
  3. Instanciei as variaveis depois de declarar o layout activity_cadastro (obrigatóriamente tem de ser depois)

Declarando os nomes das variaveis lá em cima, e instanciando elas depois do layout, faz com que o Java consiga identifica-lá dentro do onClick do botão.

Faz o teste ai agora


#15

Não deu certo. Continua com o mesmo erro


#16

Que estranho, rodei o código aqui e funcionou.

Ta dando exatamente o mesmo erro? Copia a mensagem vermelha do LogCat de novo, por favor

Só pra garantir que o erro é o mesmo


#17

--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: android.usuario.meuprojeto, PID: 2473
java.lang.RuntimeException: Unable to start activity ComponentInfo{android.usuario.meuprojeto/android.usuario.meuprojeto.CadastroActivity}: java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)’ on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)’ on a null object reference
at android.usuario.meuprojeto.CadastroActivity.onCreate(CadastroActivity.java:33)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Device emulator-5554disconnected, monitoring stopped.
Application terminated.


#18

Agora o erro é outro, ta dizendo que seu Button ta nulo

android.widget.Button.setOnClickListener(android.view.View$OnClickListener)’ on a null object reference

Vou ter q pedir pra vc postar o XML do layout dessa classe, tudo bem? kkkk


#19

XML Activity Main

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:text="Login:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="26dp"
    android:layout_marginStart="26dp"
    android:layout_marginTop="79dp"
    android:id="@+id/texView_login"
    android:textSize="20sp" />

<TextView
    android:text="Senha:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/texView_login"
    android:layout_alignLeft="@+id/texView_login"
    android:layout_alignStart="@+id/texView_login"
    android:layout_marginTop="86dp"
    android:id="@+id/textView_senha"
    android:textSize="20sp" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/et_login"
    android:layout_alignBaseline="@+id/texView_login"
    android:layout_alignBottom="@+id/texView_login"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:ems="10"
    android:layout_marginRight="12dp"
    android:layout_marginEnd="12dp"
    android:id="@+id/et_senha"
    android:layout_alignBaseline="@+id/textView_senha"
    android:layout_alignBottom="@+id/textView_senha"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<Button
    android:text="Não possui conta?"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="101dp"
    android:id="@+id/btn_cadastrar"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />

<Button
    android:text="Entrar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/btn_cadastrar"
    android:layout_alignLeft="@+id/et_senha"
    android:layout_alignStart="@+id/et_senha"
    android:layout_marginBottom="28dp"
    android:id="@+id/btn_logar" />

#20

XML Cadastro Activity

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:text="Cadastro"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/textView4_cadastro"
    android:textSize="30sp" />

<Button
    android:text="Cadastrar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="19dp"
    android:id="@+id/button2_ccadastrar"
    android:textSize="20sp" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/et_senha"
    android:layout_alignTop="@+id/textView10_csenha"
    android:layout_alignLeft="@+id/et_email"
    android:layout_alignStart="@+id/et_email"
    android:contentDescription="4 caracteres ou mais" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/et_email"
    android:layout_alignBaseline="@+id/textView9_cemail"
    android:layout_alignBottom="@+id/textView9_cemail"
    android:layout_alignLeft="@+id/et_idade"
    android:layout_alignStart="@+id/et_idade" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/et_cpf"
    android:textSize="18sp"
    android:layout_alignBaseline="@+id/textView6_ccpf"
    android:layout_alignBottom="@+id/textView6_ccpf"
    android:layout_alignLeft="@+id/et_nome"
    android:layout_alignStart="@+id/et_nome" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/et_endereco"
    android:layout_alignBaseline="@+id/textView7_cendereco"
    android:layout_alignBottom="@+id/textView7_cendereco"
    android:layout_alignLeft="@+id/et_cpf"
    android:layout_alignStart="@+id/et_cpf" />

<TextView
    android:text="Endereço:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="29dp"
    android:id="@+id/textView7_cendereco"
    android:textSize="20sp"
    android:layout_below="@+id/et_cpf"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="15dp"
    android:layout_marginStart="15dp" />

<TextView
    android:text="Idade:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="24dp"
    android:id="@+id/textView8_cidade"
    android:textSize="20sp"
    android:layout_below="@+id/et_endereco"
    android:layout_alignRight="@+id/textView7_cendereco"
    android:layout_alignEnd="@+id/textView7_cendereco" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/et_idade"
    android:layout_alignTop="@+id/textView8_cidade"
    android:layout_alignLeft="@+id/et_endereco"
    android:layout_alignStart="@+id/et_endereco" />

<TextView
    android:text="Email:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="18dp"
    android:id="@+id/textView9_cemail"
    android:textSize="20sp"
    android:layout_below="@+id/et_idade"
    android:layout_alignLeft="@+id/textView8_cidade"
    android:layout_alignStart="@+id/textView8_cidade" />

<TextView
    android:text="Senha:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="24dp"
    android:id="@+id/textView10_csenha"
    android:textSize="20sp"
    android:layout_below="@+id/et_email"
    android:layout_alignLeft="@+id/textView9_cemail"
    android:layout_alignStart="@+id/textView9_cemail" />

<TextView
    android:text="CPF:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:id="@+id/textView6_ccpf"
    android:textSize="20sp"
    android:layout_below="@+id/et_nome"
    android:layout_alignLeft="@+id/textView7_cendereco"
    android:layout_alignStart="@+id/textView7_cendereco"
    android:layout_marginLeft="18dp"
    android:layout_marginStart="18dp" />

<TextView
    android:text="Nome:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="61dp"
    android:id="@+id/textView5_cnome"
    android:textSize="20sp"
    android:layout_below="@+id/textView4_cadastro"
    android:layout_alignLeft="@+id/textView6_ccpf"
    android:layout_alignStart="@+id/textView6_ccpf" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/et_nome"
    android:layout_alignBaseline="@+id/textView5_cnome"
    android:layout_alignBottom="@+id/textView5_cnome"
    android:layout_alignLeft="@+id/button2_ccadastrar"
    android:layout_alignStart="@+id/button2_ccadastrar" />