Gente do céu… Só pode ser macumba!
Seguinte: Tenho um Spinner na Activity InserirAluno. Este mesmo Spinner (igual tanto no XML quando na programação na Activity em java) está em InserirMatricula. Em InserirAluno ele é exibido, mas em InserirMatricula NÃO! Crêia! Já vasculhei tudo, foi ctrl C, ctrl V mesmoooo. Tudo igual. Segue o XML e a Activity:
XML DE InserirAluno:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Aluno.InserirAluno">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cor_preta">
// ADIMITA A EXISTÊNCIA DO textInputLayout10 e titulo_turmas, NÃO COLOQUEI TUDO POR CAUSA DA LIMITAÇÃO DE CARACTERES DO GUJ
<Spinner
android:id="@+id/spinner_turmas"
style="@style/spinner_style"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@color/cor_azul_claro"
app:layout_constraintEnd_toEndOf="@+id/textInputLayout10"
app:layout_constraintStart_toStartOf="@+id/textInputLayout10"
app:layout_constraintTop_toBottomOf="@+id/titulo_turmas"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
XML DE InserirMatricula:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Matriculas.MatriculaEfetuada.InserirMatricula">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cor_preta">
<Spinner
android:id="@+id/spinner_turmas"
style="@style/spinner_style"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@color/cor_azul_claro"
android:layout_marginTop="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
NA ACTIVITY DE InserirAluno:
// ATRIBUTOS
Spinner spTurmas;
ArrayList<String> arrayListNomeTurma;
ArrayAdapter<String> arrayAdapterTurmas;
// NO onCreate
`spTurmas = findViewById(R.id.spinner_turmas);`
// NO MÉTODO:
/**
* =================================================================================
* <MÉTODO EM QUE IMPLEMENTA O SPINNER DA Turma E RETORNA O NOME DE UMA Turma VÁLIDA
* =================================================================================
*/
public void spinnerTurmas(){
// LISTA DE Turmas
Cursor resultado = banco.listarTurmasBanco();// Chamada do método listarTurmasBanco() que lista as Turmas cadastradas no Banco de Dados
if(resultado.getCount() == 0){
/**===============================================================================================
* <NÃO PRECISA EXIBIR NADA, POIS JÁ SERÁ EXIBIDO O -- Selecione uma Turma -- NO SPINNER DA Turma.
* <SE NÃO TIVER ESSA LINHA NO CÓDIGO, DÁ ERRO QUANDO NÃO TIVER NENHUMA Turma CADASTRADA
* =============================================================================================*/
}
else{
arrayListNomeTurma = new ArrayList<>();// INSTÂNCIA DO ARRAYLIST arrayListNomeTurma
arrayListNomeTurma.add(0, "-- Selecione uma Turma --");// AQUI É ADICIONADO O PRIMEIRO NOME NO PRIMEIRO ÍNDICE DO ARRAYLIST arrayListNomeTurma. O NOME É -- Selecione uma Turma --
while(resultado.moveToNext()){
String idTurma = resultado.getString(resultado.getColumnIndex("ID_TURMA"));
String nomeTurma = resultado.getString(resultado.getColumnIndex("NOME_TURMA"));
int limiteAlunos = resultado.getInt(resultado.getColumnIndex("LIMITE_ALUNOS"));
String horarioCadastro = resultado.getString(resultado.getColumnIndex("HOR_CAD_TURMA"));
String fkHorario = resultado.getString(resultado.getColumnIndex("FK_HORARIO_TURMA"));
turma = new Turma(idTurma, nomeTurma, limiteAlunos, horarioCadastro, fkHorario);// INSTÂNCIA DE UMA Turma
arrayListNomeTurma.add(turma.getNomeTurma());// INSERE O NOME DA Turma NO ARRAY DE NOMES DE Turmas
arrayAdapterTurmas = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, android.R.id.text1, arrayListNomeTurma);// INSTÂNCIA DO arrayAdapterNomesTurmas PASSANDO O ARRAYLIST arrayListNomeTurma EM SEU PARÂMETRO
spTurmas.setAdapter(arrayAdapterTurmas);// O ADAPTER DO SPINNER Turma É SETADO PASSANDO O ARRAYADAPTER arrayAdapterNomesTurmas
// SELEÇÃO DA Turma CLICADA
spTurmas.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l){
stNomeTurma = arrayListNomeTurma.get(i);// NOME DA Turma SELECIONADA NO SPINNER. i é a posição do item clicado
/**================================================================= I M P O R T A N T E =======================================================================================
* <COMO O NOME DA PRIMEIRA Turma DO ARRAYLIST arrayListNomeTurma É -- Selecione uma Turma -- E NÃO HÁ Turma CADASATRADA COM ESSE NOME, ENTÃO A Turma É null.
* <É PRECISO TRATAR O NOME -- Selecione uma Turma -- E DEPOIS TRATAR A PRIMEIRA Turma QUE É null.
* <APÓS TRATAR O NOME -- Selecione uma Turma --, A Turma É CONSULTADA NO BANCO DE DADOS E, DEPOIS DE TRATAR A Turma null, O MÉTODO RETORNA O NOME DE UMA Turma DIFERENTE DE null
* ============================================================================================================================================================================*/
if(stNomeTurma.equals("-- Selecione uma Turma --")){
/**===================================================================================================
* <NESTE if É TRATADO O PRIMEIRO NOME DO ARRAYLIST arrayListNomeTurma QUE É -- Selecione uma Turma --
* <ESTE NOME NÃO É DE UMA Turma VÁLIDA, ENTÃO O NOME RECEBE O VALOR null
* =================================================================================================*/
stNomeTurma = null;
}
else{
/**=======================================================================================================================
* <AQUI É FEITA A CONSULTA NO BANCO DE DADOS PELA Turma. A PRIMEIRA Turma (CUJO NOME É -- Selecione uma Turma --) É null.
* <A CONSULTA DA Turma NÃO PODE SER FEITA ANTES DE VERIFICAR O PRIMEIRO ÍNCICE DO
* <NOME DA Turma QUE É -- Selecione uma Turma -- POIS ESSE NOME NÃO É UMA Turma VÁLIDA
* =====================================================================================================================*/
turma = banco.consultarTurmaPeloNomeBanco(stNomeTurma);
// QUANDO Turma FOR null, É POR QUE SE TRATA DA Turma CUJO NOME É -- Selecione uma Turma -- OU A PRIMEIRA Turma E ELA NÃO FOI CADASTRADA, ELA NÃO EXISTE, SEU VALOR É null
if(turma == null){
// NESSE CASO O APP NÃO ESBOÇA NENHUMA AÇÃO, MAS ESSA VERIFICAÇÃO É NECESSÁRIA PARA QUE NÃO SE TRABALHE COM A Turma null
}
else{
stNomeTurma = turma.getNomeTurma();// stNomeTurma RECEBE O NOME DA Turma SELECIONADA DEPOIS DELA TER SIDO CONSULTADA E VERIFICADA SE É null OU NÃO
// listarAlunos(stNomeTurma);
}
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView){
}
});
}
}
}
NA ACTIVITY DE InserirMatricula:
// ATRIBUTOS
Spinner spTurmas;
ArrayList<String> arrayListNomeTurma;
ArrayAdapter<String> arrayAdapterTurmas;
// NO onCreate:
spTurmas = findViewById(R.id.spinner_turmas);
// NO MÉTODO:
/**
* =================================================================================
* <MÉTODO EM QUE IMPLEMENTA O SPINNER DA Turma E RETORNA O NOME DE UMA Turma VÁLIDA
* =================================================================================
*/
public void spinnerTurmas(){
// LISTA DE Turmas
Cursor resultado = banco.listarTurmasBanco();// Chamada do método listarTurmasBanco() que lista as Turmas cadastradas no Banco de Dados
if(resultado.getCount() == 0){
/**===============================================================================================
* <NÃO PRECISA EXIBIR NADA, POIS JÁ SERÁ EXIBIDO O -- Selecione uma Turma -- NO SPINNER DA Turma.
* <SE NÃO TIVER ESSA LINHA NO CÓDIGO, DÁ ERRO QUANDO NÃO TIVER NENHUMA Turma CADASTRADA
* =============================================================================================*/
}
else{
arrayListNomeTurma = new ArrayList<String>();// INSTÂNCIA DO ARRAYLIST arrayListNomeTurma
arrayListNomeTurma.add(0, "-- Selecione uma Turma --");// AQUI É ADICIONADO O PRIMEIRO NOME NO PRIMEIRO ÍNDICE DO ARRAYLIST arrayListNomeTurma. O NOME É -- Selecione uma Turma --
while(resultado.moveToNext()){
String idTurma = resultado.getString(resultado.getColumnIndex("ID_TURMA"));
String nomeTurma = resultado.getString(resultado.getColumnIndex("NOME_TURMA"));
int limiteAlunos = resultado.getInt(resultado.getColumnIndex("LIMITE_ALUNOS"));
String horarioCadastro = resultado.getString(resultado.getColumnIndex("HOR_CAD_TURMA"));
String fkHorario = resultado.getString(resultado.getColumnIndex("FK_HORARIO_TURMA"));
turma = new Turma(idTurma, nomeTurma, limiteAlunos, horarioCadastro, fkHorario);// INSTÂNCIA DE UMA Turma
arrayListNomeTurma.add(turma.getNomeTurma());// INSERE O NOME DA Turma NO ARRAY DE NOMES DE Turmas
arrayAdapterTurmas = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, android.R.id.text1, arrayListNomeTurma);// INSTÂNCIA DO arrayAdapterNomesTurmas PASSANDO O ARRAYLIST arrayListNomeTurma EM SEU PARÂMETRO
spTurmas.setAdapter(arrayAdapterTurmas);// O ADAPTER DO SPINNER Turma É SETADO PASSANDO O ARRAYADAPTER arrayAdapterNomesTurmas
// SELEÇÃO DA Turma CLICADA
spTurmas.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l){
stNomeTurma = arrayListNomeTurma.get(i);// NOME DA Turma SELECIONADA NO SPINNER. i é a posição do item clicado
/**================================================================= I M P O R T A N T E =======================================================================================
* <COMO O NOME DA PRIMEIRA Turma DO ARRAYLIST arrayListNomeTurma É -- Selecione uma Turma -- E NÃO HÁ Turma CADASATRADA COM ESSE NOME, ENTÃO A Turma É null.
* <É PRECISO TRATAR O NOME -- Selecione uma Turma -- E DEPOIS TRATAR A PRIMEIRA Turma QUE É null.
* <APÓS TRATAR O NOME -- Selecione uma Turma --, A Turma É CONSULTADA NO BANCO DE DADOS E, DEPOIS DE TRATAR A Turma null, O MÉTODO RETORNA O NOME DE UMA Turma DIFERENTE DE null
* ============================================================================================================================================================================*/
if(stNomeTurma.equals("-- Selecione uma Turma --")){
/**===================================================================================================
* <NESTE if É TRATADO O PRIMEIRO NOME DO ARRAYLIST arrayListNomeTurma QUE É -- Selecione uma Turma --
* <ESTE NOME NÃO É DE UMA Turma VÁLIDA, ENTÃO O NOME RECEBE O VALOR null
* =================================================================================================*/
}
else{
/**=======================================================================================================================
* <AQUI É FEITA A CONSULTA NO BANCO DE DADOS PELA Turma. A PRIMEIRA Turma (CUJO NOME É -- Selecione uma Turma --) É null.
* <A CONSULTA DA Turma NÃO PODE SER FEITA ANTES DE VERIFICAR O PRIMEIRO ÍNCICE DO
* <NOME DA Turma QUE É -- Selecione uma Turma -- POIS ESSE NOME NÃO É UMA Turma VÁLIDA
* =====================================================================================================================*/
turma = banco.consultarTurmaPeloNomeBanco(stNomeTurma);
// QUANDO Turma FOR null, É POR QUE SE TRATA DA Turma CUJO NOME É -- Selecione uma Turma -- OU A PRIMEIRA Turma E ELA NÃO FOI CADASTRADA, ELA NÃO EXISTE, SEU VALOR É null
if(turma == null){
// NESSE CASO O APP NÃO ESBOÇA NENHUMA AÇÃO, MAS ESSA VERIFICAÇÃO É NECESSÁRIA PARA QUE NÃO SE TRABALHE COM A Turma null
}
else{
stNomeTurma = turma.getNomeTurma();// stNomeTurma RECEBE O NOME DA Turma SELECIONADA DEPOIS DELA TER SIDO CONSULTADA E VERIFICADA SE É null OU NÃO
//listarAlunos(stNomeTurma);
}
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView){
}
});
}
}
}
Já tive o mesmo problema com o ImageView, em InserirAluno eu consigo enviar ela de uma activity pra outra, mas em outra classe implementado do mesmo jeito, ela não vai nem sob tortura.
Alguém pra mostrar o jogo dos 7 erros?
Desde já mt obg!!!