1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Button, problema no setOnClickListener

Boa tarde pessoal!

Estou com um problema na parte de alterar usuários do meu aplicativo de cadastro de aluno, a parte de inserir novo aluno está perfeita e funcionando bem. Porém a parte de alterar um aluno ja existente parece que está funcionando mais estou com problema na parte colocar o botao Alterar para fazer o codigo que altera funcionar, pois toda vida que coloco o código pro botão funcionar, em vez de ele chama a tela de alterar ele chama a tela de novo aluno.

Aqui está o código da classe que altera e insere novos alunos:

package caelum.com.br.cadastrocaelum;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RatingBar;
import android.widget.Toast;

import br.com.caelum.cadastro.dao.AlunoDAO;
import br.com.caelum.modelo.Aluno;

/**
 * Created by CarLoSlMiTo2 on 30/06/2014.
 */
public class Formulario extends Activity {

    private Aluno aluno = new Aluno();

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.formulario);

        aluno = (Aluno) getIntent().getSerializableExtra("alunoSelecionado");

        if (aluno == null) {
            Button botao = (Button) findViewById(R.id.botao);
            botao.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    EditText nome = (EditText) findViewById(R.id.nome);
                    EditText telefone = (EditText) findViewById(R.id.telefone);
                    EditText site = (EditText) findViewById(R.id.site);
                    RatingBar nota = (RatingBar) findViewById(R.id.nota);
                    EditText endereco = (EditText) findViewById(R.id.endereco);

                    aluno.setNome(nome.getEditableText().toString());
                    aluno.setTelefone(telefone.getEditableText().toString());
                    aluno.setSite(site.getEditableText().toString());
                    aluno.setNota(nota.getRating());
                    aluno.setEndereco(endereco.getEditableText().toString());

                    AlunoDAO dao = new AlunoDAO(Formulario.this);
                    dao.inserir(aluno);
                    dao.close();
                    finish();
                }
            });
        }
        else {
                Button b = (Button) findViewById(R.id.botao);
                b.setText("Alterar");
                b.setClickable(true);

                EditText nome = (EditText) findViewById(R.id.nome);
                nome.setText(aluno.getNome());

                EditText telefone = (EditText) findViewById(R.id.telefone);
                telefone.setText(aluno.getTelefone());

                EditText endereco = (EditText) findViewById(R.id.endereco);
                endereco.setText(aluno.getEndereco());

                EditText site = (EditText) findViewById(R.id.site);
                site.setText(aluno.getSite());

                RatingBar nota = (RatingBar) findViewById(R.id.nota);
                nota.setRating((float) aluno.getNota());

                AlunoDAO dao = new AlunoDAO(this);
                dao.alterar(aluno);
                dao.close();
            }
        }
        }

Minha tela de novo aluno fica assim: http://imagizer.imageshack.us/a/img823/4966/r6plq.jpg

Minha tela de altera fica assim: http://imageshack.com/a/img819/3775/bk86e.jpg

Porém o botão altera não está funcionando para que a alteração seja concluida. Sei que falta o setOnClickListener, mas quando eu coloco ele preciso altera a referencia this para Formulario.this, isso faz com que minha tela de novo aluno seja chamado em vez de chamar a tela de alteração de cadastro.

Se alguem sabe como chamar a tela do altera fazendo o botão altera funcionar, por favor me informem.

Agradeço desde já!

  • Debugou se esta funcionando aluno = (Aluno) getIntent().getSerializableExtra("alunoSelecionado"); ?

    Roberto   02 de jul de 2014
  • Acabei de debugar e não está com problema, apenas faltava a linha(aluno = new Aluno();) dentro do if que eu tinha apagado errado. acabei de colocar e está tudo funcionando exceto o problema que eu citei acima.

    Carlos   02 de jul de 2014
  • O botão de alterar está funcionando ou não?

    lucasgarofolo   03 de jul de 2014
  • da forma que eu coloquei não está, falta o método pra fazer ele ser clicavel, preciso de algum metodo alternativo sem ser o setOnClickListener ou uma forma de fazer com ele próprio sem da o erro que eu citei acima.

    Carlos   03 de jul de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags android banco-de-dados xml ou faça a sua própria pergunta.