Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Problema no Ex3 problema no cast

Fazendo o código do método Deleta e da classe aluno com o Id sendo Long igualzinho o do exercício, o Android Studio mostra que não é possível fazer o cast de um Long para uma String

// String[] parametros = {aluno.getId().toString()};

 public void deleta(Aluno aluno) {
        SQLiteDatabase db = getWritableDatabase();

        String[] parametros = {aluno.getId().toString()};
        db.delete("Alunos","id = ?", parametros);
    }
6 respostas

Veja se seu método getId devolve um Long.

Está devolvendo um long, ao pesquisar na internet, consegui resolver da seguinte maneira que funcionou, porém não sei o porquê de uma forma está funcionando e de outra não:

public void deleta(Aluno aluno) { SQLiteDatabase db = getWritableDatabase();

String[] parametros = {Long.toString(aluno.getId())}; db.delete("Alunos","id = ?", parametros); }

Felipe Torres, você sabe o porquê disso ? Obrigado pela ajuda.

solução!

Provavelmente, seu método getId está devolvendo um long (minúsculo) em vez de um Long (maiúsculo). Posta sua classe Aluno pra eu dar uma olhada.

Estou com o mesmo problema, ao apertar no botão Deletar o programa fecha. O código esta igual ao da Alura.

public class Aluno {
      private Long id;
 public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
public void deleta(Aluno aluno) {
        SQLiteDatabase db = getWritableDatabase();
        String[] params = {aluno.getId().toString()};
        db.delete("Aluno","id = ?", params);
    }

Renan, poderia abrir um novo tópico com essa sua dúvida?

O meu estava do Mesmo jeito, Porém eu fiz exatamente o que o Felipe Mencionou. E Deu certo! Troquei tbm o long que tinha nos Getters and Setters e consegui adicionar to.String ao getId()dos parametros.