Erro ao inserir imagem android

  • Respostas:0
Igor Fastroni
  • Posts no fórum: 2

03/07/2015, 02:35:36 via Web

Galera, estou com um problema que não consigo achar a solução, minha saída é vocês, estou tentando inserir uma foto e mostrar ela, porém ela é um pouco grande, só consegui fazer com umas fotos de pouquissimos kb quando tem mais de 30 kb não consigo.

esse é o erro:

07-03 00:36:43.270: E/AndroidRuntime(2356): FATAL EXCEPTION: main
07-03 00:36:43.270: E/AndroidRuntime(2356): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=5678, result=-1, data=Intent { dat=file:///storage/emulated/0/Download/6DfNDvlIZlVoxfGh2TxMlYvaOlIAGMgNivhqVkuL5jP5yYNMY4c0ZwSkXuhAGf1A7OKdj6RePK-cjGs99lLaQJ-MSYaDryj5dvJZT8pvvwI9NfynLts=w256-h256-nc.png }} to activity {br.com.igorfastroni.seek/br.com.igorfastroni.seek.CadastrarActivity}: java.lang.NullPointerException
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.app.ActivityThread.deliverResults(ActivityThread.java:3319)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.app.ActivityThread.access$1100(ActivityThread.java:141)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.os.Handler.dispatchMessage(Handler.java:99)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.os.Looper.loop(Looper.java:137)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.app.ActivityThread.main(ActivityThread.java:5041)
07-03 00:36:43.270: E/AndroidRuntime(2356): at java.lang.reflect.Method.invokeNative(Native Method)
07-03 00:36:43.270: E/AndroidRuntime(2356): at java.lang.reflect.Method.invoke(Method.java:511)
07-03 00:36:43.270: E/AndroidRuntime(2356): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-03 00:36:43.270: E/AndroidRuntime(2356): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-03 00:36:43.270: E/AndroidRuntime(2356): at dalvik.system.NativeStart.main(Native Method)
07-03 00:36:43.270: E/AndroidRuntime(2356): Caused by: java.lang.NullPointerException
07-03 00:36:43.270: E/AndroidRuntime(2356): at br.com.igorfastroni.seek.CadastrarActivity.onActivityResult(CadastrarActivity.java:333)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.app.Activity.dispatchActivityResult(Activity.java:5293)
07-03 00:36:43.270: E/AndroidRuntime(2356): at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
07-03 00:36:43.270: E/AndroidRuntime(2356): ... 11 more

E Esse é minha classe

package br.com.igorfastroni.seek;

import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;

public class CadastrarActivity extends Activity {

private ImageView ivSelectedImage;
private static final int REQUEST_CODE = 5678;
// private static final int REQUEST_CODE = 1000005678;

private List<String> cursos = new ArrayList<String>();
private String curso;

private List<String> materias = new ArrayList<String>();
private String materia;
private String m1;
private String m2;
private String m3;
private String m4;
private String m5;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_cadastrar);

    final EditText edNome = (EditText) findViewById(R.id.edtNome);
    final EditText edtLogin = (EditText) findViewById(R.id.edtLogin);
    final EditText edtPass = (EditText) findViewById(R.id.edtPass);
    final Spinner spnCurso = (Spinner) findViewById(R.id.spinner1);
    final Spinner spnM1 = (Spinner) findViewById(R.id.spnM1);
    final Spinner spnM2 = (Spinner) findViewById(R.id.spnM2);
    final Spinner spnM3 = (Spinner) findViewById(R.id.spnM3);
    final Spinner spnM4 = (Spinner) findViewById(R.id.spnM4);
    final Spinner spnM5 = (Spinner) findViewById(R.id.spnM5);

    // Adicionando os cursos no ArrayList
    cursos.add("Ciência da Computação");
    cursos.add("Engenharia da Computação");

    // Adicionando as materias no ArrayList
    materias.add("Algoritmos");
    materias.add("Cálculo: Limite e Derivada");
    materias.add("C");

    // Cria um ArrayAdapter usando um padrão de layout da classe R do
    // android, passando o ArrayList cursos
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_dropdown_item, cursos);
    ArrayAdapter<String> spinnerArrayAdapter = arrayAdapter;
    spinnerArrayAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    spnCurso.setAdapter(spinnerArrayAdapter);

    // Cria um ArrayAdapter usando um padrão de layout da classe R do
    // android, passando o ArrayList materias
    ArrayAdapter<String> arrayAdapterMaterias = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_dropdown_item, materias);
    ArrayAdapter<String> spinnerArrayAdapterM1 = arrayAdapterMaterias;
    spinnerArrayAdapterM1
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    spnM1.setAdapter(spinnerArrayAdapterM1);

    // Cria um ArrayAdapter usando um padrão de layout da classe R do
    // android, passando o ArrayList materias
    // ArrayAdapter<String> arrayAdapterMaterias = new
    // ArrayAdapter<String>(this,
    // android.R.layout.simple_spinner_dropdown_item, materias);
    ArrayAdapter<String> spinnerArrayAdapterM2 = arrayAdapterMaterias;
    spinnerArrayAdapterM2
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    spnM2.setAdapter(spinnerArrayAdapterM2);

    // Cria um ArrayAdapter usando um padrão de layout da classe R do
    // android, passando o ArrayList materias
    // ArrayAdapter<String> arrayAdapterMaterias = new
    // ArrayAdapter<String>(this,
    // android.R.layout.simple_spinner_dropdown_item, materias);
    ArrayAdapter<String> spinnerArrayAdapterM3 = arrayAdapterMaterias;
    spinnerArrayAdapterM3
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    spnM3.setAdapter(spinnerArrayAdapterM3);

    // Cria um ArrayAdapter usando um padrão de layout da classe R do
    // android, passando o ArrayList materias
    // ArrayAdapter<String> arrayAdapterMaterias = new
    // ArrayAdapter<String>(this,
    // android.R.layout.simple_spinner_dropdown_item, materias);
    ArrayAdapter<String> spinnerArrayAdapterM4 = arrayAdapterMaterias;
    spinnerArrayAdapterM4
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    spnM4.setAdapter(spinnerArrayAdapterM4);

    // Cria um ArrayAdapter usando um padrão de layout da classe R do
    // android, passando o ArrayList materias
    // ArrayAdapter<String> arrayAdapterMaterias = new
    // ArrayAdapter<String>(this,
    // android.R.layout.simple_spinner_dropdown_item, materias);
    ArrayAdapter<String> spinnerArrayAdapterM5 = arrayAdapterMaterias;
    spinnerArrayAdapterM5
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    spnM5.setAdapter(spinnerArrayAdapterM5);

    // Método do Spinner para capturar o item selecionado
    spnCurso.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int posicao, long id) {
            // pega nome pela posição
            curso = parent.getItemAtPosition(posicao).toString();
            // imprime um Toast na tela com o nome que foi selecionado para
            // teste!!
            // Toast.makeText(CadastrarActivity.this, "Nome Selecionado: " +
            // curso, Toast.LENGTH_LONG).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    // TESTE

    // Método do Spinner para capturar o item selecionado MATERIA
    spnM1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int posicao, long id) {
            // pega nome pela posição
            m1 = parent.getItemAtPosition(posicao).toString();
            // imprime um Toast na tela com o nome que foi selecionado para
            // teste!!
            // Toast.makeText(CadastrarActivity.this, "Nome Selecionado: " +
            // curso, Toast.LENGTH_LONG).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    // TESTE

    // Método do Spinner para capturar o item selecionado MATERIA
    spnM2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int posicao, long id) {
            // pega nome pela posição
            m2 = parent.getItemAtPosition(posicao).toString();
            // imprime um Toast na tela com o nome que foi selecionado para
            // teste!!
            // Toast.makeText(CadastrarActivity.this, "Nome Selecionado: " +
            // curso, Toast.LENGTH_LONG).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    // TESTE

    // Método do Spinner para capturar o item selecionado MATERIA
    spnM3.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int posicao, long id) {
            // pega nome pela posição
            m3 = parent.getItemAtPosition(posicao).toString();
            // imprime um Toast na tela com o nome que foi selecionado para
            // teste!!
            // Toast.makeText(CadastrarActivity.this, "Nome Selecionado: " +
            // curso, Toast.LENGTH_LONG).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    // TESTE

    // Método do Spinner para capturar o item selecionado MATERIA
    spnM4.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int posicao, long id) {
            // pega nome pela posição
            m4 = parent.getItemAtPosition(posicao).toString();
            // imprime um Toast na tela com o nome que foi selecionado para
            // teste!!
            // Toast.makeText(CadastrarActivity.this, "Nome Selecionado: " +
            // curso, Toast.LENGTH_LONG).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    // TESTE

    // Método do Spinner para capturar o item selecionado MATERIA
    spnM5.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int posicao, long id) {
            // pega nome pela posição
            m5 = parent.getItemAtPosition(posicao).toString();
            // imprime um Toast na tela com o nome que foi selecionado para
            // teste!!
            // Toast.makeText(CadastrarActivity.this, "Nome Selecionado: " +
            // curso, Toast.LENGTH_LONG).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    // TESTE

    Button btCadastro = (Button) findViewById(R.id.btCadastro);
    Button btSelect = (Button) findViewById(R.id.btSelect);

    ivSelectedImage = (ImageView) findViewById(R.id.ivSelectedImage);

    btSelect.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Select Picture"),
                    REQUEST_CODE);
        }
    });

    btCadastro.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Bitmap bitmap = ((BitmapDrawable) ivSelectedImage.getDrawable())
                    .getBitmap();

            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();

            AlunoDAO dao = new AlunoDAO();
            Aluno user = new Aluno();

            user.setNome(edNome.getText().toString());
            user.setLogin(edtLogin.getText().toString());
            user.setPass(edtPass.getText().toString());
            user.setCurso(curso.toString());
            user.setM1(m1.toString());
            user.setM2(m2.toString());
            user.setM3(m3.toString());
            user.setM4(m4.toString());
            user.setM5(m5.toString());
            user.setFoto(byteArray);

            user = dao.inserirUsuario(user);

            if (user != null) {
                finish();
            } else {
                Toast.makeText(CadastrarActivity.this, "Erro no Cadastro",
                        Toast.LENGTH_LONG).show();
            }
        }
    });

}

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

    if (requestCode == REQUEST_CODE && data != null
            && data.getData() != null) {

        Uri uri = data.getData();

        Cursor cursor = getContentResolver()
                .query(uri,
                        new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
                        null, null, null);
        cursor.moveToFirst();

        final String imageFilePath = cursor.getString(0);
        cursor.close();

        Bitmap bitmap = BitmapFactory.decodeFile(imageFilePath);
        ivSelectedImage.setImageBitmap(bitmap);
    }

}

}

```

— alterado em 03/07/2015, 02:37:05

Responder