Seguinte:
Implementei dois spinners em uma activity e estavam funcionando bem. Atualizei o Android Studio pro 4.0 e eles não estão rodando mais. Então dei souts neles pra ver até onde estava indo pra saber onde estava parando. Abaixo os atributos e o spinner:
// ATRIBUTOS
ArrayList<String> arrayListNomeTurno, arrayListNomeHorario;
ArrayAdapter<String> arrayAdapterTurno, arrayAdapterHorario;
// SPINNER
public String spinnerTurnos(){
System.out.println("1");
/**<========================================================================================================
* <LISTA DE TURNOS
* <========================================================================================================**/
Cursor resultadoTurno = banco.listarTurnosBanco();// Chamada do método listarTurnosBanco() que lista os turnos cadastrados no sistema
System.out.println("2");
if(resultadoTurno.getCount() == 0){
System.out.println("3");
return null;
}
else{
System.out.println("4");
arrayListNomeTurno = new ArrayList<>();
/**<ESTA LINHA ADICIONA NÃO PODE SER EXCLUÍDA, POIS O PRIMEIRO ÍNDICE DO Spinner NO ARRAYLIST DE STRINGS arrayListNomeTurno
<COM O FIM DE QUE O PRIMEIRO ÍNDICE TENHA O NOME -- Selecione um Turno --**/
arrayListNomeTurno.add(0, "-- Selecione um Turno --");
System.out.println("5");
while(resultadoTurno.moveToNext()){
System.out.println("6");
String idDTurno = resultadoTurno.getString(resultadoTurno.getColumnIndex("ID_TURNO"));
String inicioTurno = resultadoTurno.getString(resultadoTurno.getColumnIndex("INICIO_TURNO"));
String finalTurno = resultadoTurno.getString(resultadoTurno.getColumnIndex("FINAL_TURNO"));
String nomeTur = resultadoTurno.getString(resultadoTurno.getColumnIndex("TURNO"));
System.out.println("8");
turno = new Turno(idDTurno, nomeTur, inicioTurno, finalTurno);// Instânci do turno apóes receber os valores acima em seus parâmetros
System.out.println("9");
arrayListNomeTurno.add(turno.getNomeTurno());// Adiciona todos os turnos até que o laço "while" seja finalizado
System.out.println("10");
arrayAdapterTurno = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, android.R.id.text1, arrayListNomeTurno);// Instância do arrayAdapterTurno, onde é passado o arrayListNomeTurno em seu parâmetro
System.out.println("11");
spTurno.setAdapter(arrayAdapterTurno);// O spTurno é setado ao ser passado o arrayAdapterTurno em seu setAdapter()
System.out.println("12");
/**<SÓ EM CHAMAR O SPINNER spHorario, ELE JÁ APARECE. ENTÃO PARA ISSO NÃO APARECER, O ADAPTER DO spHorario RECEBE null PARA SÓ SER EXIBIDO QUANDO O TURNO FOR CLICADO**/
spHorario.setAdapter(null);
System.out.println("13");
/**<SELEÇÃO DO TURNO CLICADO**/
spTurno.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int i, long id){
System.out.println("14");
stNomeTurno = arrayListNomeTurno.get(i);// i é a posição do item clicado
System.out.println("15");
if(stNomeTurno.equals("-- Selecione um Turno --")){
/**<SE ESSA VERIFICAÇÃO NÃO EXISTIR, AO ABRIR O LAYOUT DE INSERIR_ALUNO, O SISTEMA DÁ ERRO,
<POIS O NOME DO TURNO DO PRIMEIRO ÍNDICE DO ARRAY arrayListNomeTurno É -- Selecione um Turno --
<E NÃO HÁ TURNO CADASTRADO NO SISTEMA COM ESSE NOME, ENTÃO SE NÃO TIVER ESSA VERIFICAÇÃO, OCORRERÁ UM ERRO**/
}
else{
/**<A CONSULTA DE UM TURNO NÃO PODE SER FEITA ANTES DE VERIFICAR O PRIMEIRO ÍNCICE DOS NOMES DOS TURNOS QUE É -- Selecione um Turno --
* <POIS ESSE NOME NÃO É UM TURNO VÁLIDO**/
turno = banco.consultarTurnoPeloNomeBanco(stNomeTurno);
/**<SE TURNO FOR NULL, NÃO É EXIBIDO NADA NA TELA DO CADASTRO DE ALUNO**/
if(turno == null){
}
/**<QUANDO EXISTE TURNO CADASTRADO, O APP PROCEGUE**/
else{
/**<stNomeTurno RECEBE O NOME DO TURNO SELECIONADO. ELE É UMA PK DO TURNO E É IGUAL À FK DO TURNO DO ALUNO**/
stNomeTurno = turno.getNomeTurno();
/**<PASSA O stNomeTurno NO PARÂMETRO DO spinnerHorarios PARA DAR PROCEGUIMENTO AO PROCESSO DE CADASTRO DA TURMA**/
spinnerHorarios(stNomeTurno);
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent){
// Não faz nada
}
});
}
System.out.println("16:::" + stNomeTurno);
return stNomeTurno;
}
}
// OS souts VÃO ATÉ AQUI:
I/System.out: 1
I/System.out: 2
I/System.out: 4
5
6
8
I/System.out: 9
10
11
I/System.out: 12
I/System.out: 13
16:::null
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: sistema.escola, PID: 31267
java.lang.RuntimeException: Unable to start activity ComponentInfo{sistema.escola/sistema.escola._Turma.InserirTurma}: java.lang.IllegalArgumentException: the bind value at index 1 is null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3122)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3261)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1977)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6923)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)
Caused by: java.lang.IllegalArgumentException: the bind value at index 1 is null
at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:164)
at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1408)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1347)
at sistema.escola.BancoDeDados.BancoDeDados.consultarTurnoPeloNomeBanco(BancoDeDados.java:1372)
at sistema.escola._Turma.InserirTurma.spinnerHorarios(InserirTurma.java:235)
at sistema.escola._Turma.InserirTurma.onCreate(InserirTurma.java:76)
Ele não entra no CLIQUE do SPINNER. Já pesquisei e nada…
Fiz um ADAPTER CUSTOMIZADO, mas a situação continua, ELE NÃO ENTRA NO CLIQUE DO SPINNER.
Desde já mt obg!