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

Passando dados entre Activities

Boa tarde. Após selecionar o aluno e passar para a tela do formulário para editar os dados todos os campos (Nome, Endereço, Site e Telefone) são preenchidos com o campo "nome". Exemplo: Selecionei um aluno "Joao" para editar, ao transferir para a tela do formulário ele vem preenchido todos os campos com o nome "Joao" ao invés do Endereco, Site, Telefone e Nota do "Joao". Alguém sabe me dizer o por que?

ListaActivity.java

        listaAlunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View iten, int position, long id) {
                Aluno aluno = (Aluno) listaAlunos.getItemAtPosition(position);

                Intent intentVaiProFormulario = new Intent(ListaActivity.this, FormularioActivity.class );
                intentVaiProFormulario.putExtra("aluno", aluno);
                startActivity(intentVaiProFormulario);
            }
        });

FormularioActivity.java

        Intent intent = getIntent();
        Aluno aluno = (Aluno) intent.getSerializableExtra("aluno");
        if (aluno != null) {
            helper.preencheFormulario(aluno);
        }
       };

FormularioHelper.java

    public void preencheFormulario(Aluno aluno) {
        campoNome.setText(aluno.getNome());
        campoEndereco.setText(aluno.getEndereco());
        campoTelefone.setText(aluno.getTelefone());
        campoSite.setText(aluno.getSite());
        campoNota.setProgress(aluno.getNota().intValue());
        this.aluno = aluno;
    }

Aluno.java

public class Aluno implements Serializable{
    private Long id;
    private String nome;
    private String endereco;
    private String telefone;
    private String site;
    private Double nota;

    public Long getId() {
        return id;
    }

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

    public String getNome() {
        return nome;
    }

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

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getSite() {
        return site;
    }

    public void setSite(String site) {
        this.site = site;
    }

    public Double getNota() {
        return nota;
    }

    public void setNota(Double nota) {
        this.nota = nota;
    }

    public void add(Aluno aluno) {

    }

    @Override
    public String toString() {
        return getId() + " - " + getNome();
    }
}

Se precisarem de mais algum trecho do código é só avisar!

6 respostas

Emerson, tudo bem ?

Cara dá uma olhadinha na forma que você pega os dados, provavelmente tem algo errado lá.

Abraços

Tudo bem Matheus. Você pode ser mais específico?

O método pega aluno do formulário, que é o momento que você cria o aluno. Acho que ali você esteja fazendo algo errado.

Matheus, eu não encontrei o erro, vou colocar o meu código abaixo e se você ou alguém puder me ajudar eu agradeço!

    public Aluno pegaAluno() {
        aluno.setNome(campoNome.getText().toString());
        aluno.setEndereco(campoNome.getText().toString());
        aluno.setTelefone(campoNome.getText().toString());
        aluno.setSite(campoNome.getText().toString());
        aluno.setNota((double) campoNota.getProgress());
        return aluno;
    }

    public void preencheFormulario(Aluno aluno)  {
        this.aluno = aluno;
        campoNome.setText(aluno.getNome());
        campoEndereco.setText(aluno.getEndereco());
        campoTelefone.setText(aluno.getTelefone());
        campoSite.setText(aluno.getSite());
        this.campoNota.setProgress(this.aluno.getNota().intValue());

    }
}

    @Override
    public boolean onOptionsItemSelected(MenuItem item)  {
        switch (item.getItemId()) {
            case R.id.menu_formulario_ok:
                Aluno aluno = helper.pegaAluno();
                AlunoDAO dao = new AlunoDAO(this);
                if (aluno.getId() !=null) {
                    dao.altera(aluno);
                } else {
                    dao.insere(aluno);
                }
                dao.close();

                Toast.makeText(FormularioActivity.this, "Contato salvo. ", Toast.LENGTH_SHORT).show();

                finish();
                break;
        }
solução!

O seu pegaAluno, todos seus setters você está usando o mesmo campo : campoNome só alterar para os corretos e imagino que funcione.

Abraços

Muito obrigado!