Toda vez que eu adiciono aluno sem foto da um crash, gostaria de saber onde está o problema no código. Muito obrigado!
FormularioActivity:
public class FormularioActivity extends AppCompatActivity {
public static final int CODIGO_CAMERA = 567;
private FormularioHelper helper ;
private String CaminhoFoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_formulario);
helper = new FormularioHelper(this);
Intent intent = getIntent();
Aluno aluno = (Aluno) intent.getSerializableExtra("aluno");
if (aluno != null) {
helper.preencheFormulario(aluno);
}
Button botaoFoto = (Button) findViewById(R.id.button_camera);
botaoFoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
CaminhoFoto = getExternalFilesDir(null) + "/" + System.currentTimeMillis() + ".jpg";
File ArquivoFoto = new File(CaminhoFoto);
intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(ArquivoFoto));
startActivityForResult(intentCamera, CODIGO_CAMERA);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CODIGO_CAMERA && resultCode == RESULT_OK){
helper.carregaImagem(CaminhoFoto);
//abrir foto
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_formulario, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.menu_formulario_ok:
Aluno aluno = helper.getAluno();
AlunoDAO dao = new AlunoDAO(this);
if(aluno.getId() != null){
dao.altera(aluno);
} else {
dao.insereAluno(aluno);
}
dao.close();
finish();
break;
}
return super.onOptionsItemSelected(item);
}
}
Adapter:
public View getView(int position, View convertView, ViewGroup parent) {
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(ctx);
Aluno aluno = alunos.get(position);
View view = convertView;
if(view == null){
view = inflater.inflate(R.layout.list_item, parent, false);
}
TextView campoNome = (TextView) view.findViewById(R.id.item_nome);
campoNome.setText(aluno.getNome());
TextView campoTelefone = (TextView) view.findViewById(R.id.item_telefone);
campoTelefone.setText(aluno.getTelefone());
ImageView campoFoto = (ImageView) view.findViewById(R.id.item_foto);
String CaminhoDaFoto = aluno.getCaminhoFoto();
if(CaminhoDaFoto != null) {
Bitmap bitmap = BitmapFactory.decodeFile(CaminhoDaFoto);
Bitmap BitmapReduzido = Bitmap.createScaledBitmap(bitmap, 100, 100, true); //true -> filter
campoFoto.setImageBitmap(BitmapReduzido);
campoFoto.setScaleType(ImageView.ScaleType.FIT_XY);
}
return view;
}
FormularioHelper:
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){
campoNome = (EditText) activity.findViewById(R.id.form_nome);
campoEndereco = (EditText) activity.findViewById(R.id.form_endereco);
campotelefone = (EditText) activity.findViewById(R.id.form_telefone);
campoSite = (EditText) activity.findViewById(R.id.form_site);
campoNota = (RatingBar) activity.findViewById(R.id.form_nota);
campoFoto = (ImageView) activity.findViewById(R.id.form_foto);
this.aluno = new Aluno();
}
public Aluno getAluno() {
Aluno aluno = new Aluno();
aluno.setNome(campoNome.getText().toString());
aluno.setEndereco(campoEndereco.getText().toString());
aluno.setTelefone(campotelefone.getText().toString());
aluno.setSite(campoSite.getText().toString());
aluno.setNota(Double.valueOf((campoNota.getProgress())));
aluno.setCaminhoFoto(campoFoto.getTag().toString());
aluno.setId(this.aluno.getId());
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;
}
public void carregaImagem(String CaminhoDaFoto) {
if(CaminhoDaFoto != null){
Bitmap bitmap = BitmapFactory.decodeFile(CaminhoDaFoto);
Bitmap BitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true); //true -> filter
campoFoto.setImageBitmap(BitmapReduzido);
campoFoto.setScaleType(ImageView.ScaleType.FIT_XY);
campoFoto.setTag(CaminhoDaFoto);
}
}
}