>
Boa noite Professor Rafael,
O meu nome é César Oliveira, sou de Portugal dono da agência profissionalweb.net e sou um dos seus mais recentes alunos do curso de Android
Tenho uma duvida que nunca vi respondida em lado nenhum
Sempre que se fala em navegação entre telas da-se sempre o exemplo de quem está na tela principal e chama uma 2º tela e na 2º tela volta-se para a 1º com o metodo finish() fechando a 2º tela e não indo para outra tela.
Mas imagine que eu tenho uma barra de navegação em todas as activitys e eu posso ir para qualquer uma delas
Imagine que estou na 1º tela, depois vou para a 2º e dai vou para a 5º e depois para a 1º tela
para chamar uma tela eu uso:
Intent i=new Intent(this, Tela2.class);
startActivity(i);
A minha pergunta é, como faço para poder de qualquer tela chamar outra tela que pode até já estar na pilha ?
Se eu abrir a tela que for com o código que falei posso ter um problema de duplicação de telas na pilha e perda de performance da aplicação ?
Obrigado
Cumprimentos
César Oliveira
http://profissionalweb.net
Boa Noite César.
Neste caso, poderia me passar um "case" de porque iria necessitar isso?
Assim, podemos entender onde a arquitetura Android se aproximaria para um resultado desta necessidade.
Sem entender o que você gostaria criar, eu já utilizaria as navegações via Tab, onde que cada Tab possui uma Activity e, posso acessar elas, sem ter que passar por outras acticity.
Bom dia Rafael,
Não tenho ainda nenhum projecto em especifico para usar isso
Mas quando tiver, pretendo usar
Eu quero fazer uma barra de navegação entre telas parecida com um menu de um site onde tanto podemos estar na pagina inicio como na nós e depois em serviços e depois em inicio e depois em parceiros, etc.
Se eu usar finish() volto para a tela anterior mas não é isso que pretendo
Fala-me no uso de tabs, essa é a unica alternativa que existe no android ?
Cumprimentos
César Oliveira
http://profissionalweb.net
Olá César.
Quando citou igual a uma barra de navegação, a tabs é muito indicada sim.
A outra forma que você pode fazer é, utilizar o padrão de projeto Singleton.
Onde você garante a instância da classe uma unica vez, em todo projeto.
Já usou ele em Java?
Ainda não usei isso em Java
Você pode me dar um exemplo simples disso em Android de forma a que a performance da aplicação não seja prejudicada
Obrigado
Cumprimentos
César Oliveira
http://profissionalweb.net
Cesar,
Fiz uns testes aqui!
Faça o seguinte.
No AndroidManifest, onde você registrou a activity, altere o atributo launchMode para singleInstance.
Caso não funcione, podemos ver o uso ou de Tabs ou do padrão Singleton!
Como é esse padrão singleton ?
Pode me dar um exemplo simples ?
Obrigado
Cumprimentos
César Oliveira
http://profissionalweb.net
Olá César
Irei preparar um exemplo e enviar.
Mas, pergunto: o exemplo que citei não funcionou?
Boa noite,
Obrigao
Para quem está a aprender todas as soluções são estudáveis
Mas quero a melhor solução para o problema em questão
Cumprimentos
César Oliveira
http://profissionalweb.net
Rafael, boa noite,
Quando me vai entregar o exemplo que disse que me ia preparar sobre singlator ?
Obrigado
Cumprimentos
César Oliveira
http://profissionalweb.net
Olá Rafael,
Não obtive resposta a minha pergunta de quando me vai entregar o exemplo
Recebeu a minha mensagem
Crie uma nova classe com o nome MySingleton (file>new>class...).
public class MySingleton {
private int myInt;
private String myString;
private static MySingleton instance ;
private MySingleton() {
myInt = 0;
myString = "";
}
public static MySingleton getInstance () {
if ( MySingleton.instance == null ) {
MySingleton.instance = new MySingleton();
}
return MySingleton.instance;
}
public int getMyInt() {
return myInt;
}
public void setMyInt(int i) {
this.myInt = i;
}
public String getMyString() {
return myString;
}
public void setMyString(String s) {
this.myString = s;
}
}
Rafael, boa tarde,
Seria possivel você me enviar um zip com o projecto em Eclips com 3 ou 4 activitys para eu ver tudo a funcionar ?
Obrigado
Cumprimentos
César Oliveira
http://profissionalweb.net
César,
Note que enviei um exemplo de como trabalhar com o padrão Singleton.
Agora, como seu objetivo é mais em Activity, é só você ir no Manifest e adicionar no registro da Activity isso:
android:launchMode="singleTop"
Assim resolveria seu problema.
Lhe envie o exemplo de Singleton, mas como uma alternativa via Java de padrão de projetos.
Mas pensando em boas práticas em Android, a melhor forma seria esta.
Você entendeu a ideia de ambos?
Rafael, boa tarde,
E usamos a classe assim:
MySingleton mDados = MySingleton.getInstance ();
mDados.setMyInt(100);
mDados.setMyString("Teste");
Quando uso isso ?
----------
E em outra activity:
MySingleton mDados = MySingleton.getInstance ();
int i = mDados.getMyInt();
String s = mDados.getMyString();
E isto, quando usamos ?
----------------
Pensando na sua activity, na hora de abrir é só tentar fazer:
MySingleton mDados = MySingleton.getInstance ();
mDados.startActivity();
Confesso que não entendi muito bem onde vou meter cada coisa dessas
Será possivel você me enviar um projecto em Eclipse com com a negação entre 3 telas ?
Obrigado
César Oliveira
Não consegui por isso a funcionar
Pode me enviar o projecto eclipse em ZIP
Obrigado
Olá Cesar, Segue um exemplo em projeto: http://rlsystem.com.br/forum/disco/uploads/31221b0dee74c9c62aca195d3131ce33-Singleton.zip