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

erro no if: não consigo fazer o if entender que o valor do id pode ser nulo

é o único erro no programa todo, como transformo o valor do long em string? ele não aceita aluno.getid().toString(), fiz o value of mas ele diz que sempre será diferente de null....

AlunoDAO dao = new AlunoDAO(this);
                    if (String.valueOf(aluno.getId()) != null){
               /*         dao.altera(aluno);
                    }else{*/
                        dao.insere(aluno);
                    }
8 respostas

Boa tarde, Fernando! Como vai?

Cole aqui o código da sua classe Aluno para que eu possa dar uma olhada e te ajudar!

Acho que não tem erro, mudei de long pra int pra ver se aceitava, mas não vai. Se tirar o else e o alterar faz tudo de boa, se deixar como está ele apenas altera. Na aula o Android Studio aceita a forma que foi escrito mas no meu não está deixando, estou usando a versão mais recente, várias coisas ficaram diferentes, eu dei um jeito pra funcionar mas queria que esse erro fosse resolvido... Obrigado.

public class Aluno  implements Serializable{

    private int id;
    private String nome;
    private String endereço;
    private String RA;
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereço() {
        return endereço;
    }

    public void setEndereço(String endereço) {
        this.endereço = endereço;
    }

    public String getRA() {
        return RA;
    }

    public void setRA(String RA) {
        this.RA = RA;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString(){
        return getId() + " - " + getNome();
    }
}
solução!

Fernando, seu problema está acontecendo pq está utilizando long, ou seja, o tipo primitivo! E tipos primitivos nunca serão iguais a null. Para resolver o seu problema vc precisa utilizar as classes wrappers! Faz o seguinte na sua classe Aluno:

public class Aluno  implements Serializable{

    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

Com essa mudança vc poderá fazer o if assim:

if (aluno.getId() != null){
     dao.altera(aluno);
} else {
     dao.insere(aluno);
}

Grande abraço e bons estudos!

eu fiz isso, mas não rolou não...

Fernando, repare que o L de Long é maiúsculo e isso é importante! Fazendo isso, vc poderá escrever o if da forma como eu te falei.

Faz o seguinte, implemente as mudanças que eu te mostrei e caso ocorra algum erro, me diz o que está acontecendo para que eu possa continuar a te ajudar!

kkkkk, sabia que era alguma coisa bem idiota.... Afe, "éle" minúsculo... Valeu cara!

pow, agora não consigo mais testar pq o dispositivo emulado sumiu!!!! Estava usando desde cedo, aí fechei. Abri e não tem mais dispositivo....Pode isso? Esse programa melhorou bastante, mas pelamordedeus hein....quero Visual Studio.....vou tentar fazer por lá tbm....

Mto bem, Fernando!

Sempre que tiver qualquer dúvida é só procurar o pessoal aqui no fórum!

Grande abraço e bons estudos!