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

problema para gerar caminho da foto

Pessoal, Um duvida, estou com problemas de gerar com o caminha da foto, eu consegui gerar o caminho da foto, quando eu clico no botão da foto. so que o problema é que no método onActivityResult() a minha variavel caminhoFoto vem como nulo, detalhe a minha variavel é global da classe FormularioActivity.. Alguem consegue me ajudar... Veja a classe abaixo:

package br.com.caelum.cadastro;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;

import br.com.caelum.cadastro.dao.AlunoDAO;
import br.com.caelum.cadastro.entidade.Aluno;
import br.com.caelum.cadastro.helper.FormularioHelper;

/**
 * Created by Elton on 07/07/2015.
 */
public class FormularioActivity extends Activity {

    private FormularioHelper helper;
    private String caminhoFoto;


    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario);

        helper = new FormularioHelper(this);

        final Aluno alunoSelecionado = (Aluno) getIntent().getSerializableExtra("br.com.caelum.alunoSelecionado");

        final Button botao = (Button) findViewById(R.id.btn_inserir);

        if (alunoSelecionado != null) {
            Toast.makeText(this, "Aluno: " + alunoSelecionado, Toast.LENGTH_SHORT).show();
            helper.colocarAlunoNoFormulario(alunoSelecionado);
            botao.setText("Alterar");
        }

        botao.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Aluno aluno = helper.convert();

                AlunoDAO dao = new AlunoDAO(FormularioActivity.this);

                if(alunoSelecionado != null){
                    aluno.setId(alunoSelecionado.getId());
                    dao.alterar(aluno);
                } else {
                    dao.inserir(aluno);
                }

                dao.close();

                Toast.makeText(FormularioActivity.this, "Foi Adicionado com Sucesso! ", Toast.LENGTH_LONG).show();

                finish();
            }
        });

        ImageView foto = helper.getFoto();
        foto.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onClick(View v) {
                caminhoFoto = getFilesDir() + "/" + System.currentTimeMillis() +".png";
                Intent irParaCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                irParaCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(caminhoFoto)));
                startActivityForResult(irParaCamera, 123);

            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == 123){
            if(resultCode == Activity.RESULT_OK){
                helper.carregaImagem(caminhoFoto);
            } else {
                caminhoFoto = null;
            }
        }

    }

}
2 respostas
solução!

Bom galera, caso alguem tenha esse problema consegue resolver... Isso ocorre com alguns aparelhos principalmente a linha galaxy da samsung... Dentro do AndroidManifest, na declaração da Activity voce tem que passar uma tag a mais, veja o exemplo abaixo:

<activity 
    android:name=".FormularioActivity" 
    android:label="Cadastro"
    android:configChanges="orientation|keyboardHidden|screenSize" />

Isso resolve o problema, pois quando abrimos a camera, e clicamos na opção salvar, o galaxy nao consegue pegar a instancia da activity que ele criou anteriormente e acaba criando uma nova, é ai que ocorre o problema no momento de salvar.

<activity 
    android:name=".FormularioActivity" 
    android:label="Cadastro"
    android:configChanges="orientation|keyboardHidden|screenSize"/>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software