Galera, tenho uma aplicação que tem uma tela de Login e mais algumas telas. Quando clico no Menu Sair de minha aplicação, volta na tela de Login. Gostaria que encerrasse o aplicativo. Alguém tem uma ideia de como faz?
É android?
É. To usando o finish no switch-case, mas cai na tela de login
finish() volta à tela que invocou a activity anterior. Não existe mecanismo próprio no android para fazer isso, pois este comportamento não é esperado. Você ja percebeu que apps famosos como Gmail, Maps, app de Contatos não tem um botão Sair ou Finalizar?
leia mais sobre:
Estou lendo o link e não estou achando nada, tem como me ajudar?
É o link da pesquisa. No primeiro site já tem uma boa discussão sobre o assunto.
Vi esse link:
http://stackoverflow.com/questions/4732184/how-to-finish-an-android-application
Não estou entendendo bem ao certo o que tem que fazer.
Leia também a documentação da API:
http://developer.android.com/reference/android/app/Activity.html
Nela você vai encontrar um diagrama contendo o ciclo de vida de uma activity.
Pensei nesse OnDestroy. Não sei como usá-lo.
Hmmm. Acho que entendi melhor o que você quer e acho que da pra fazer sim. Quando você invoca finish() em uma Activity, esta é finalizada e o android volta o fluxo para a Activity que a invocou, por isso está voltando para o login.
Vamos com calma. A Activity que tem o botão “Sair” provavelmente foi invocado da Activity de login, certo? Poste o código (classe inteira) da Activity de login.
Segue Login.java
package com.br.aquavendas;
import com.br.aquavendas.vo.Global;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Login extends Activity{
public static Global global = new Global();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
final EditText edtLogin = (EditText) findViewById(R.id.edtLogin);
final EditText edtSenha = (EditText) findViewById(R.id.edtSenha);
edtLogin.setText("");
edtSenha.setText("");
final SharedPreferences preferencia = getSharedPreferences("config", 0);
Button btnLogar = (Button) findViewById(R.id.btnLogar);
btnLogar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String login = preferencia.getString("login", "admin");
String senha = preferencia.getString("senha", "123");
if (login.equals(edtLogin.getText().toString())){
if (senha.equals(edtSenha.getText().toString())){
startActivity(new Intent(getBaseContext(), Main.class));
global.setUsuarioLogado(edtLogin.getText().toString());
}
}
}
});
} // Fim onCreate
}
g4j
A classe Login ta postada ai, ok? No aguardo de uma ajuda quando possível.
Faz assim:
Na tela de login, se o usuário e senha forem digitados corretamente, chama a próxima atividade e invoca o método finish(); logo após. Assim, a tela de login vai ser fechada, e quando vc voltar, o aplicativo será encerrado, pq não existe mais a atividade de login na pilha de atividades.
m_araujo01, Seria no botão Logar da Classe Login?
Button btnLogar = (Button) findViewById(R.id.btnLogar);
btnLogar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String login = preferencia.getString("login", "admin");
String senha = preferencia.getString("senha", "123");
if (login.equals(edtLogin.getText().toString())){
if (senha.equals(edtSenha.getText().toString())){
startActivity(new Intent(getBaseContext(), Main.class));
global.setUsuarioLogado(edtLogin.getText().toString());
}
}
}
});
Olá
É só colocar o finish() após o global.setUsuarioLogado(edtLogin.getText().toString());
Ok, obrigado. Vou testar.
[quote=A H Gusukuma]Olá
É só colocar o finish() após o global.setUsuarioLogado(edtLogin.getText().toString()); [/quote]
Não entendi. Finaliza a activity após fazer o login?
É o que disseram pra fazer, tem alguma sugestão?
Já testou? O que ocorreu?
Estou testando no momento. Já posto o resultado.