Pessoal, Fiz o curso com a versão 3.2.1 do Android Studio, o que acontece que quando do inicio do curso fui tentar abrir a mesma Activity no processo de criação do projeto ( "Blank Activity"), porém esse recurso não está estava disponível nessa versão do Android e criei o projeto com uma Activity que pensava que era similar "Basic Activity". Fiz o curso exatamente igual às vídeos aulas e chegando na parte onde na parte onde tinha que trocar o botão "Salvar" de lugar subindo o para menu, percebi que minha Activity não tinha esse menu, então eu resolvi continuar os estudos com o botão de salvar onde estava mesmo, e não removi da class "FormularioActivity".
. . .
public class FormularioActivity extends AppCompatActivity {
private FormularioHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario);
helper = new FormularioHelper(this);
/*Inicio do tratamento do botão salvar*/
Button botaoSalvar = (Button) findViewById(formulario_salvar);
botaoSalvar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*aqui é onde criamos o evento do botão*/
//Depois de clicar no botão o código abaixo vai recuperar as informações na active lista de alunos
Aluno aluno = helper.pegaAluno();
AlunoDAO dao = new AlunoDAO(this);
dao.insere(aluno);
dao.close();
Toast.makeText(FormularioActivity.this, "Aluno " + aluno.getNome() + " Salvo", Toast.LENGTH_SHORT).show();
finish(); //ao invés de criar um novo tratamento indo pra outra tela, coloca-se apenas o "finish()" para não duplicar a tela
}
});
}
// Aqui estamos criando uma instância que faz o botão salver ir para barra de título
@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) {
/*aqui é onde criamos o evento do botão*/
switch (item.getItemId()){
case R.id.menu_formulario_ok:
//Depois de clicar no botão o código abaixo vai recuperar as informações na active lista de alunos
Aluno aluno = helper.pegaAluno();
Toast.makeText(FormularioActivity.this, "Aluno " + aluno.getNome() + " Salvo", Toast.LENGTH_SHORT).show();
finish(); //ao invés de criar um novo tratamento indo pra outra tela, coloca-se apenas o "finish()" para não duplicar a tela
break;
}
return super.onOptionsItemSelected(item);
}
}
As outras classes ficaram exatamente iguais. Quando cheguei na aula Ciclo de Vida das Activity no vídeo 4 "Buscando Aluno no banco", comecei ter problemas de compilação na classe "ListaAlunosActivity" durante a chamada da classe AlunoDAO, logo após a retirada da String Array de nomes, o compilador já não aceitava referenciar a classa "AlunoDAO dao = new AlunoDAO(onClickListener this);", não aceitava o contexto, aí o compilador me deu uma outra alternativa que seria referenciar a classe AlunoDAO por meio da chamada "AlunoDAO dao = new AlunoDAO((View.OnClickListener)this);", problemas de "cast" já que o botão Salvar em baixo permanece. Tentei ir ajustando por soluções do compilador "por meio do alt+enter" permitia para continuar acompanhando aula sem retirar o meu botão Salvar, cheguei até conseguir compilar, porém ao simular aplicação para testar o processo de Salvar Aluno para exibir o aluno na tela "Lista de Alunos", o LogCat mostrou o seguinte erro:
" --------- beginning of crash
01-23 00:19:30.912 2737-2737/br.com.fabianoneves.agenda E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.fabianoneves.agenda, PID: 2737
java.lang.RuntimeException: Unable to start activity ...
Caused by: java.lang.ClassCastException: br.com.fabianoneves.agenda.ListaAlunosActivity cannot be cast to android.view.View$OnClickListener
at br.com.fabianoneves.agenda.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:31)
at android.app.Activity.performCreate(Activity.java:6237) "
Não permitiu mais simular por problemas na Activity, o correto tratamento de evento no botão Salvar, não reconhece o Cast por ser Activity diferente. Como resolver o problema?