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

Passando dados entre activitys

Gostaria que quando o usuario clicasse no aluno, ao invez de abrir o formulario denovo, abrisse uma nova activity... criei essa activity, mas no momento que vou declarar o FormularioHelper e passar o (this) como parametro, ele nao aceita... como posso resolver isso?

6 respostas

public class FormularioHelper {
    private final EditText campoNome;
    private final EditText campoEndereco;
    private final EditText campoTelefone;
    private final EditText campoSite;
    private final RatingBar campoNota;
    private final ImageView campoFoto;

    private Aluno aluno;


    public  FormularioHelper(FormularioActivity activity){
        //Para conseguir aplicar o findViewById é necessário passar o Activity como parametro nesse metodo
         campoNome = (EditText) activity.findViewById(R.id.formulario_nome);
         campoEndereco = (EditText) activity.findViewById(R.id.formulario_endereco);
         campoTelefone = (EditText) activity.findViewById(R.id.formulario_telefone);
         campoSite = (EditText) activity.findViewById(R.id.formulario_site);
         campoNota = (RatingBar) activity.findViewById(R.id.formulario_nota);
         campoFoto = (ImageView) activity.findViewById(R.id.formulario_foto);
         aluno = new Aluno();// como ele foi criado aqui(ele não tem ID ainda)
    }

    public Aluno pegaAluno() {

        aluno.setNome(campoNome.getText().toString());
        aluno.setEndereco(campoEndereco.getText().toString());
        aluno.setTelefone(campoTelefone.getText().toString());
        aluno.setSite(campoSite.getText().toString());
        //como pegar a nota!!!
        aluno.setNota(Double.valueOf(campoNota.getProgress()));

        //para pegar a imagem(olhar o settag no formularioActivity
        aluno.setCaminhoFoto((String) campoFoto.getTag());
        return  aluno;
    }

    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());

        carregaImagem(aluno.getCaminhoFoto());
        this.aluno = aluno;//para pegar o ID tb(foi necessario instanciar aluno no inicio)
    }

    public void carregaImagem(String caminhoFoto) {
        //verifica se ele tem foto
            if (caminhoFoto != null) {
                Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
                //reduzir a foto para o bitmap suportar
                Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true);
                campoFoto.setImageBitmap(bitmapReduzido);
                //para usar essa foto no tamanho total do parent
                campoFoto.setScaleType(ImageView.ScaleType.FIT_XY);
                // é necessario fazer o settag para passa-lo como objeto para o formularioHelper
                //pois dai é possivel associa-lo ao imageview
                campoFoto.setTag(caminhoFoto);
            }
    }
}
public class ExibeAlunoActivity extends AppCompatActivity {

    private FormularioHelper helper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exibe_aluno);

        helper = new FormularioHelper();

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

        }
    }
}

Francisco, tudo bem ?

Cara dá uma olhadinha no construtor da classe FormularioHelper. Você está recebendo uma referencia para a activity FormularioActivity.

Entendi, mas eu nao posso tirar ela ... o q q eu faço??

solução!

Pode criar um novo construtor que receba o objeto que você deseja.

Ou senão criar um novo helper para poder cuidar dessa segunda tela,

Caaaraca mlk! Tu eh craneo msmo!

Valeeeeu Matheus!!