[quote=fbrigatt]Não quero que façam por mim, quero que me ajudem, estou com essas dúvidas, pois já está pronto, é só separar.
Eu estou com duvida quanto aos imports, pq na Classe DBAdapter é onde crio o banco e as tabelas, certo?
Na classe CadastrarTipoVeiculo importo DBAdapter: import br.me.aquasystem.banco.DbAdapter; Perunta: Preciso do import br.me.aquasystem.banco.DbAdapter e private DbAdapter mDb; na classe TipoVeiculoDAO? Como faria a chamada dos métodos CRUD na CadastrarTipoVeiculo, pois estou fazendo assim: mDb.gravarTipoVeiculo(tipo_veiculoString);
[/quote]
Se o DbAdapter for a classe-pai, então encapsule o mDb com método get protected (não precisa ser público pois quem tem que ter acesso são as classes-filhas) e na chamada, ao invés de usar mDb.gravarTipoVeiculo(tipo_veiculoString); usa getMDb().gravarTipoVeiculo(tipo_veiculoString);
Dentro de DbAdapter tem que colocar este método:
protected SQLiteDatabase getMDb() {
return mDb;
}
Apenas classes no mesmo pacote ou classes filhas irão enxergar este método.
[quote=fbrigatt]Fiz assim na classe TipoVeiuculoDAO e esta dando erro na query:
Deixei assim na classe DbAdapter: public static final String DATABASE_TABLE_TIPO_VEICULO = “tipo_veiculo”;
public class TipoVeiculoDAO {
private DbAdapter mDb;
// TABELA TIPO VEÍCULO : KEY_ID_TIP, KEY_TIPDESC
public Cursor getTodosTipoVeiculo(){
return mDb.query(mDb.DATABASE_TABLE_TIPO_VEICULO, null, null, null, null, null, null); // mDb.query ta sublinhado de vermelho
}
Tem que tirar o mDb?[/quote]
Na verdade, teria que ser assim:
public class TipoVeiculoDAO extends DbAdapter {
// private DbAdapter mDb;
// TABELA TIPO VEÍCULO : KEY_ID_TIP, KEY_TIPDESC
public Cursor getTodosTipoVeiculo(){
return getMDb(). //Este método TEM que estar implementado em DbAdapter conforme eu coloquei nos posts acima.
query(mDb.DATABASE_TABLE_TIPO_VEICULO, null, null, null, null, null, null); // mDb.query ta sublinhado de vermelho
}
[quote=fbrigatt]Está dando esse erro
Implicit super constructor DbAdapter() is undefined for default constructor. Must define an explicit constructor
Na linha:
public class TipoVeiculoDAO extends DbAdapter { //TipoVeiculoDAO está sublinhado
[/quote]Significa que DbAdapter não possui um construtor vazio, logo, ou cria um nele (não recomendado se você não sabe o que está fazendo) ou cria um construtor com os mesmos parâmetros na classe filha (TipoVeiculoDAO) e, no corpo do construtor, faz a chamada a super(parametros…).
Mas, sinceramente, acho que você está precisando revisar (ou conhecer) uma série de conceitos de programação com Java, seja para Android ou não… e você também precisa aprender a entender os erros apresentados. Este mesmo, ao invés de colocar aqui, poderia ter pesquisado no google… Digo isso para que você evite de ficar batendo a cabeça e empacado a mais de um dia com detalhes pequenos (pois não necessariamente seremos rápidos em responder sua dúvida e uma googada poderia ser mais rápida).
[quote=fbrigatt]Entendi, obrigado pelo conselho. Vou dar uma pesquisada sobre isso. Eu já imaginava que seria o construtor da classe. Só da uma dica de como fazer isso, é melhor fazer na TipoVeiculoDAO?[/quote]sim.
Exemplo:
public ConstrutorClasseFilha(String param1, int param2) {
super(param1, param2);
//Codigo específico do construtor da classe filha se houver.
}
[quote=fbrigatt]wellington.nogueira
que erro é esse?[/quote]
É NullPointerException
Significa que você está utilizando um objeto que não foi inicializado. Eu já achei no teu código qual foi o objeto não inicializado.
Como vc está tornando o DAO filho de DbAdapter, a criação desse objeto (db) passa a ser desnecessária. Porém você passou a utilizar TipoVeiculoDAO (dao) mas, você criou o objeto?