Olá Julio,
Vamos analisar o seguinte trecho de código:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario);
helper = new FormularioHelper(this);
Intent intentAlunoSerializado = getIntent();
Aluno aluno = (Aluno) intentAlunoSerializado.getSerializableExtra("aluno");
if (aluno != null) {
helper.preencheFormulario(aluno);
}
List<String> filmes = Arrays.asList("Gmail", "Hotmail", "Bol", "Outros");
ArrayAdapter<String> adapterSpinner;
Spinner spinerEmail;
adapterSpinner = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, filmes);
spinerEmail = (Spinner) findViewById(R.id.formulario_campoEmail);
spinerEmail.setAdapter(adapterSpinner);
// resto do código
Perceba que nesse código, o método preencheFormulario(...)
é chamado antes de definirmos quem é o Adapter
do Spinner
. Isso significa que quando tentarmos pegar o Adapter
naquele código que te passei, receberemos um null
como resposta, explicando assim a NullPointerException
que estamos tomando.
Para resolver, uma simples mudança de ordem deve funcionar:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario);
helper = new FormularioHelper(this);
List<String> filmes = Arrays.asList("Gmail", "Hotmail", "Bol", "Outros");
ArrayAdapter<String> adapterSpinner;
Spinner spinerEmail;
adapterSpinner = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, filmes);
spinerEmail = (Spinner) findViewById(R.id.formulario_campoEmail);
spinerEmail.setAdapter(adapterSpinner);
Intent intentAlunoSerializado = getIntent();
Aluno aluno = (Aluno) intentAlunoSerializado.getSerializableExtra("aluno");
if (aluno != null) {
helper.preencheFormulario(aluno);
}
// resto do código
Nesse caso, estamos preparando o Adapter
primeiro e depois pedindo para preencher o formulário. Agora sim o código de seleção do Spinner
deve funcionar.