Jade, obrigado pela ajuda.
Eu havia começado a fazer outras coisas e acabei por não implementar de imediato a classe Singleton. Eu nunca trabalhei com esse tipo, procurei alguns exemplos na internet, mas tem uma maneira correta de fazer isto voltado para o Contexto em específico no Android?
Obrigado pela atenção desde já.
On Wednesday, November 28, 2012 1:21:54 AM UTC-2, Jade Costa wrote:
-- On Wednesday, November 28, 2012 1:21:54 AM UTC-2, Jade Costa wrote:
Não guarde o Context no seu objeto Parcelable.Faça uma classe que extenda Application;Declare ela no manifesto;Use-a para acessar o singleton da application context, quando precisar de um e não quiser passar o da Activity (chamando getApplicationContext() na Activity).Em 26 de novembro de 2012 15:54, Guilherme Bernardi <gui.ber...@gmail.com> escreveu:
Entendi, obrigado Rafael.Eu estou com um problema na passagem do context para uma classe que implementa Parcelable.Eu só consegui fazer a classe manter a propriedade Context preenchida se eu setá-la através do método Grava() da classe de Pedido e passando o Contexto carregado na classe do Pedido.for(int i = 0; i < this.getItensCount(); i++) {this.Itens.get(i).setContextoPedidoItem(this. getContextoPedido()); this.Itens.get(i).Grava();}Acredito que é por causa da classe estar implementando Parcelable.Eu tenho a propriedade de Contexto na Classe PedidoItem.Só que nos métodos:public PedidoItem(Parcel in) {// TODO Auto-generated constructor stubthis.setNumero(in.readInt());this.setItem(in.readInt());this.setTipoVenda(in.readInt()); this.setProduto(in.readString()); this.setQtde(in.readFloat());this.setValor(in.readFloat());this.setDesconto(in.readFloat()); this.setAcrescimo(in.readFloat()); this.setQtdeAmarelo(in.readFloat()); this.setQtdeAzul(in.readFloat()); this.setQtdeRosa(in.readFloat()); this.setQtdeVerde(in.readFloat()); }e@Overridepublic void writeToParcel(Parcel dest, int flags) {// TODO Auto-generated method stubdest.writeInt(this.getNumero()); dest.writeInt(this.getItem());dest.writeInt(this.getTipoVenda()); dest.writeString(this.getProduto()); dest.writeFloat(this.getQtde()); dest.writeFloat(this.getValor()); dest.writeFloat(this.getDesconto()); dest.writeFloat(this.getAcrescimo()); dest.writeFloat(this.getQtdeAmarelo()); dest.writeFloat(this.getQtdeAzul()); dest.writeFloat(this.getQtdeRosa()); dest.writeFloat(this.getQtdeVerde()); }Não estou encontrando uma forma de passar a propriedade do tipo Context para o Parcel. Então ela é zerada após isso ficando null.Já utilizou Parcelable, ou sabe como posso resolver isto?--
On Monday, November 26, 2012 3:32:40 PM UTC-2, rafael...@novaprolink.com.br wrote:Utilize getApplicaitonContext() ao invés de getBaseContext() , assim vc utilizará o contexto global da aplicação ao invés do contexto da activity. Por ser ligado à Activity, ao ter sua activity destruída e recriada posteriormente, este contexto vai impedir que a anterior seja coletada pelo GC. O Contexto é utilizado basicamente para obter dados dos Resources da aplicação, como strings, temas, layouts, etc... A aplicação possui um, e cada Activity também. O Application context não pode ser utilizado para criar componentes visuais, mas pras demais operações é o mais indicado pra evitar leaks como mencionei acima.Rafael
Em segunda-feira, 26 de novembro de 2012 14h27min44s UTC-2, Guilherme Bernardi escreveu:Boa tarde pessoal.Estou desenvolvendo um aplicativo com banco de dados SQLite e é o meu primeiro no caso.Gostaria de entender algumas coisas que no mínimo são bem iniciantes acredito eu. Se alguém puder me ajudar eu ficarei muito grato.1 - Já desenvolvi aplicativos antes, mas qual seria a definição exatamente do Context que é muito utilizado em instâncias pelo aplicativo todo e etc?2 - Agora a dúvida quanto ao SQLite. No construtor do banco de dados, é exigido um parâmetro de context:- new DbHelper(context, nomeBanco, factory, versaoBanco, scriptSQLCreate, scriptSQLDelete)Eu estou trabalhando com uma classe de Persistencia que é responsável pela comunicação com a classe do Banco de Dados e por persistir os dados no banco de dados.Então no método de Grava() da Persistencia eu criei uma propriedade:private Context Contexto;E nas sub-classes por exemplo Pedido, eu criei também uma propriedade de Contexto. Que é carregada no OnCreate da Activity do CadastroPedido, quando a classe é instanciada:pedido = new Pedido(getBaseContext());E no método Grava() da classe de Pedido, que faz um Override do método Grava() da classe de Persistencia, eu preencho os atributos da Persistencia incluindo o Contexto:this.setContexto(this.getContextoPedido()); Após carregar as propriedades da persistencia incluindo o Contexto e chamando o método Grava():super.Grava();
No método grava() da classe de persistência eu instancio o Banco de dados, passando o contexto carregado na propriedade da persistência, que passei através das classes:DataBase = new DadosBD(this.getContexto());
E então trabalho com os dados carregados, fazendo inserção, atualização ou deleção dos dados.Esta é a maneira correta de trabalhar com esse Contexto exigido pelo SQLite?Se é a maneira correta, estou tendo problemas para passá-lo através de uma classe de implementa Parcelable.Obrigado desde já.
--
Jade Moreira da Costa






0 comentários:
Postar um comentário