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);
}
} );
}
}
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" />
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>
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.
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’
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
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
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();
}
}
});
}
}
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
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
Outra coisa, você está extendendo MainActivity, ta errado isso.
Troca pra AppCompatActivity, ficando assim:
public class CadastroActivity extends AppCompatActivity {
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
mas quando rodo o programa continua dando erro, ele fecha ao clicar no botão para ir para a tela de cadastro
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?
- Troquei a extensão pra AppCompatActivity
- Declarei os nomes das variaveis antes do método onCreate
- 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
Não deu certo. Continua com o mesmo erro
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
--------- 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.
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
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" />
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" />