Olá, estou começando a fazer um aplicativo
Tenho uma pergunta de noob
To com um problema na questão de utilizar o botão voltar, o aplicativo vai ter varias telas, e sempre que pressionado uma vez o botão, quero que ele volte para anterior
O problema é que estou fazendo algo errado, abaixo o codigo e o erro
public class app1 extends Activity {
Button bt1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app);
bt1 = (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
[b]@Override // Aqui esta o problema, o botão funciona, mas quando volta para a primeira tela, o botão não funciona mais, e o app(obviamente) fica so na tela 1, pois sobescrevi o comando voltar...como poderia resolver isso ?[/b]
public void onBackPressed(){
setContentView(R.layout.activity_app);
}
@Override
public void onClick(View v) {
tela1();//chama a tela ao clicar
}
});
}
public void tela1(){
setContentView (R.layout.p);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.app_menui, menu);
return true;
}
Só que se tu ficar dando voltas, isso gera um problema.
main -> search -> cadastro
seria a hierarquia.
Mas o usuário pode ficar indo várias vezes do search para o cadastro, e depois, ao usar o voltar “natural” do sistema, vai ficar voltando de uma tela para outra, que nem barata tonta.
Existe uma lógica de administração do Voltar, que eu nunca apliquei… acho que li uma vez em um dos livros do Ricardo Lecheta.
Vou ver isso quando chegar em casa (até porque eu fiquei curioso, uma hora dessas precisarei aplicar isso). Se eu achar uma boa resposta, posto aqui.
Mas dou uma dica:
A plataforma Android tem uma série de limitações. A política de simplificar é bem vinda.
Daqui a pouco criar uma estrutura FIXA de voltar vale mais a pena.
Da tela principal não voltará mais para lugar algum, eu sei… mas na real isso é bom, visto que é meio padrão no Android, que o botão de voltar na tela principal é também o botão de SAIR.
Acabei resolvendo o problema com o auxilio de um camarada de outro forum
Tinha mais erros, estava usando setContentView(R.layout.activity_app);
Dessa forma foi alterado aplicando uma intent
Eu estava chamando somente o xml, deixando as funções definidas nas activities de lado, assim qualquer coisa que eu colocasse no código, não iria dar certo
Acabei achando outros erros, eu estava somente com 1 activity, e necessito de 1 para cada tela. Acabei visualizando esse erro depois do post, fiz outro app e o erro persistiu, após o Kaito me mostrou o erro do setContentView.
Sendo a correção ficou assim;
public void tela1(){
Intent i = new Intent(App.this, tela2.class);
startActivity(i);
}
Achei que teu problema era outro.
Acho que te confundi mais só!
Que bom que conseguiu resolver.
Ainda assim, esta lógica de navegar entre as páginas e usar o botão voltar deve ser bem pensada. Mais adianta talvez tu volte a pensar nesse assunto.
Por que raios voce está dando um setContentView no onBackPressed?
Só para constar, para cada Activity você deve chamar esse método uma unica vez, não que não funcione, mas todo o estado antigo, binds de views e valores são perdidos dessa forma.