[RESOLVIDO]Atualizar Spinner através de um Radio Button

Olá, sou novata em android e tenho uma aplicação android com apenas uma activity que contem vários spinners que irão preencher uma tabela,
Em um momento preciso que a pessoa escolha em um radio button sim ou não para liberar os spinners restantes, o meu problema é que se coloco isso fora do botão gravar não consigo travar os spinners e se coloco dentro do botão gravar, ele só trava após submeter os dados, e depois não destrava.
Tem como atualizar a activity ao selecionar um radio button?

Não entendi a parte “é que se coloco isso fora do botão gravar não consigo travar os spinners e se coloco dentro do botão gravar”.

Tem como explicar melhor e postar o código?

Aqui está o código, perdoe se estiver fora dos padrões…
Método em que carrego meus spinners:

[code]public void atualizaSpinner() {
//SPINNER PARA QUE O MOTORISTA SE IDENTIFIQUE NO SISTEMA
spnMotorista = (Spinner) findViewById(R.id.spnMotorista);
List motoristas = new ArrayList();
motoristas = motoristaDAO.listaMotoristas();
ArrayAdapter adapterMotorista = new ArrayAdapter(GuiadeCanaActivity.this,
R.layout.spinner_layout,
R.id.spinner,
motoristas);
adapterMotorista.setDropDownViewResource(R.layout.spinner_layout);
spnMotorista.setAdapter(adapterMotorista);
//PEGAR O MOTORISTA SELECIONADO
spnMotorista.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

		@Override
		public void onItemSelected(AdapterView<?> selectMotorista, View arg1, int arg2, long arg3) {
			motorista = (Motorista) selectMotorista.getSelectedItem();
			indexMotorista = spnMotorista.getSelectedItemPosition();
		}
		@Override
		public void onNothingSelected(AdapterView<?> arg0) {
			//CASO NADA SEJA SELECIONADO
		}
	});
            
    //SPINNER DE REBOCADOR(O QUE O MOTORISTA IRÁ DIRIGIR)
    spnRebocador = (Spinner) findViewById(R.id.spnRebocador);
    List<Rebocador> rebocadores = new ArrayList<Rebocador>();
    rebocadores = rebocadorDAO.listaRebocadores();
    ArrayAdapter<Rebocador> adapterRebocador = new ArrayAdapter<Rebocador>(GuiadeCanaActivity.this, 
        																   R.layout.spinner_layout,
        																   R.id.spinner,
        																   rebocadores);
    adapterRebocador.setDropDownViewResource(R.layout.spinner_layout);
    spnRebocador.setAdapter(adapterRebocador);
    //PEGAR O REBOCADOR SELECIONADO
    spnRebocador.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
    	@Override
    	public void onItemSelected(AdapterView<?> selectRebocador, View arg1, int arg2, long arg3) {
			rebocador = (Rebocador) selectRebocador.getSelectedItem();
			indexRebocador = spnRebocador.getSelectedItemPosition();
		}
		@Override
		public void onNothingSelected(AdapterView<?> arg0) {
			//CASO NADA SEJA SELECIONADO
		}
    });[/code]

Segue com os outros spinners…

Método que deveria atualizar através do raddio button:

[code]public void atualizaRadio() {
rgCanaPicada = rgCana.getCheckedRadioButtonId();
if(rgCanaPicada == R.id.radioSim){
System.out.println("-----------------entro do if de libera------------");
//VÃO SER USADOS NOS SPINNERS DE TRANSBORDO
List transbordos = new ArrayList();
transbordos = transbordoDAO.listaTransbordos();

        //SPINNER DE TRANSBORDO1
    	spnTransbordo1 = (Spinner) findViewById(R.id.spnTransbordo1);
    	ArrayAdapter<Transbordo> adapterTransbordo1 = new ArrayAdapter<Transbordo>(GuiadeCanaActivity.this,
		    																	   R.layout.spinner_layout,
		    																	   R.id.spinner,
		    																	   transbordos);
    	adapterTransbordo1.setDropDownViewResource(R.layout.spinner_layout);
    	spnTransbordo1.setAdapter(adapterTransbordo1);
    	
    	//SPINNER DE TRANSBORDO2
    	spnTransbordo2 = (Spinner) findViewById(R.id.spnTransbordo2);
    	ArrayAdapter<Transbordo> adapterTransbordo2 = new ArrayAdapter<Transbordo>(GuiadeCanaActivity.this,
	    																		   R.layout.spinner_layout,
	    																		   R.id.spinner,
	    																		   transbordos);
    	adapterTransbordo2.setDropDownViewResource(R.layout.spinner_layout);
    	spnTransbordo2.setAdapter(adapterTransbordo2);
    	
    	//PEGA TRANSBORDO1 SELECIONADO
    	canaPicada = 1;
    	spnTransbordo1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
			@Override
			public void onItemSelected(AdapterView<?> selectTransbordo1, View arg1, int arg2, long arg3) {
				transbordo1 = (Transbordo) selectTransbordo1.getSelectedItem();
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				//CASO NADA SEJA SELECIONADO
			}
		});
    	
    	//PEGA TRANSBORDO2 SELECIONADO
    	spnTransbordo2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
			@Override
			public void onItemSelected(AdapterView<?> selectTransbordo2, View arg1, int arg2, long arg3) {
				transbordo2 = (Transbordo) selectTransbordo2.getSelectedItem();
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				//CASO NADA SEJA SELECIONADO
			}
		});
	}else{
		System.out.println("----------------entro no else de esconde----------");
    	canaPicada = 0;
    	spnTransbordo1.setFocusable(false);
    	spnTransbordo1.setEnabled(false);
    	spnTransbordo1.setClickable(false);
    	spnTransbordo2.setFocusable(false);
    	spnTransbordo2.setEnabled(false);
    	spnTransbordo2.setClickable(false);
	}

}[/code]

E meu botão gravar:

[code]//BOTÃO PARA GRAVAR CONTEÚDO
Button btnGravar = (Button) findViewById (R.id.btnGravar);
btnGravar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
atualizaSpinner();
if(motorista.getiRegistroFuncionario() == 0 ||
rebocador.getiCodigoVeiculo() == 0 ||
fazenda.getiCodigoFazenda() == 0 ||
carregador.getiRegistroFuncionario() == 0 ||
carregadeira.getiCodigoVeiculo() == 0 ||
tratorista.getiRegistroFuncionario() == 0 ||
trator.getiCodigoVeiculo() == 0){
AlertDialog.Builder dialog = new AlertDialog.Builder(GuiadeCanaActivity.this);
dialog.setTitle(“GUIA DE CANA”);
dialog.setMessage(“ESCOLHA VALORES VÁLIDOS.”);
dialog.setNeutralButton(“CONTINUAR”, null);
dialog.show();

		if(canaPicada == 0){
		        guiadeCana.setiCodigoTransbordo1(0);
			guiadeCana.setiCodigoTransbordo2(0);
		}else if(canaPicada == 1 && transbordo1.getiCodigoVeiculo() == 0 && transbordo2.getiCodigoVeiculo() == 0){
		        AlertDialog.Builder dialog1 = new AlertDialog.Builder(GuiadeCanaActivity.this);
			dialog1.setTitle("GUIA DE CANA");
			dialog1.setMessage("ESCOLHA UM TRANSBORDO.");
			dialog1.setNeutralButton("CONTINUAR", null);
			dialog1.show();
		}else{
		        guiadeCana.setiCodigoTransbordo1(transbordo1.getiCodigoVeiculo());
		        guiadeCana.setiCodigoTransbordo2(transbordo2.getiCodigoVeiculo());
		}
	}else{
	        g.setiRegistroMotorista(motorista.getiRegistroFuncionario());
	        g.setiCodigoRebocador(rebocador.getiCodigoVeiculo());
	        g.setiCodigoFazenda(fazenda.getiCodigoFazenda());
	        g.setiNumeroQuadra(quadra.getiNumeroQuadra());
	        g.setiRegistroCarregador(carregador.getiRegistroFuncionario());
		g.setiCodigocarregadeira(carregadeira.getiCodigoVeiculo());
		g.setiRegistroTratorista(tratorista.getiRegistroFuncionario());
		g.setiCodigoTrator(trator.getiCodigoVeiculo());
		g.setiCanaPicada(canaPicada);
		Timestamp data_trabalho = new Timestamp(new Date(System.currentTimeMillis()).getTime());
		g.settDataTrabalho(data_trabalho);
		g.inserir(guiadeCana);
		AlertDialog.Builder dialog = new AlertDialog.Builder(GuiadeCanaActivity.this);
		dialog.setTitle("Aviso");
		dialog.setMessage("INSERIDO COM SUCESSO.");
		dialog.setNeutralButton("CONTINUAR", null);
		dialog.show();
				
		//MÉTODO PARA ATUALIZAR SPINNER
		atualizaSpinner();
	}
}

});[/code]

Hum, se eu entendi bem, você quer detectar o momento em que o o radiogroup muda, para desabilitar/habilitar os spinners. Certo?

Para isto você pode registrar um listener no RadioGroup:

rgCana.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
  @Override
  public void onCheckedChanged(RadioGroup group, int checkedId) {
    if (R.id.radioSim == checkedId) {
      //habilita os spinners
    } else if (R.id.radioNao == checkedId) {
      //desabilita os spinners
    }
  }
}

A documentação do setOnCheckedChangeListener:

http://developer.android.com/reference/android/widget/RadioGroup.html#setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener)

Testei o que você falou, mas não está desabilitando os spinners, coloquei uns comentários e percebi que é porque o id do meu radio button não está sendo atualizado, quando eu mudo de sim para não, Declarei isso dentro do método atualizaSpinner:

rgCanaPicada = rgCana.getCheckedRadioButtonId(); atualizaRadio();

e mudei o método atualizaRadio conforme sua resposta:

[code]public void atualizaRadio() {
rgCana.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(rgCanaPicada == R.id.radioNao){
System.out.println("----------------entro no else de esconde----------");
canaPicada = 0;
spnTransbordo1.setFocusable(false);
spnTransbordo1.setEnabled(false);
spnTransbordo1.setClickable(false);
spnTransbordo2.setFocusable(false);
spnTransbordo2.setEnabled(false);
spnTransbordo2.setClickable(false);
}else{
//VÃO SER USADOS NOS SPINNERS DE TRANSBORDO
List transbordos = new ArrayList();
transbordos = transbordoDAO.listaTransbordos();
System.out.println("-----------------entro do if de libera------------");
//SPINNER DE TRANSBORDO1
spnTransbordo1 = (Spinner) findViewById(R.id.spnTransbordo1);
ArrayAdapter adapterTransbordo1 = new ArrayAdapter(GuiadeCanaActivity.this,
R.layout.spinner_layout,
R.id.spinner,
transbordos);
adapterTransbordo1.setDropDownViewResource(R.layout.spinner_layout);
spnTransbordo1.setAdapter(adapterTransbordo1);

				//SPINNER DE TRANSBORDO2
				spnTransbordo2 = (Spinner) findViewById(R.id.spnTransbordo2);
				ArrayAdapter<Transbordo> adapterTransbordo2 = new ArrayAdapter<Transbordo>(GuiadeCanaActivity.this,
																						   R.layout.spinner_layout,
																						   R.id.spinner,
																						   transbordos);
				adapterTransbordo2.setDropDownViewResource(R.layout.spinner_layout);
				spnTransbordo2.setAdapter(adapterTransbordo2);

				//PEGA TRANSBORDO1 SELECIONADO
				canaPicada = 1;
				spnTransbordo1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
					@Override
					public void onItemSelected(AdapterView<?> selectTransbordo1, View arg1, int arg2, long arg3) {
						transbordo1 = (Transbordo) selectTransbordo1.getSelectedItem();
					}
					@Override
					public void onNothingSelected(AdapterView<?> arg0) {
						//CASO NADA SEJA SELECIONADO
					}
				});

				//PEGA TRANSBORDO2 SELECIONADO
				spnTransbordo2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
					@Override
					public void onItemSelected(AdapterView<?> selectTransbordo2, View arg1, int arg2, long arg3) {
						transbordo2 = (Transbordo) selectTransbordo2.getSelectedItem();
					}
					@Override
					public void onNothingSelected(AdapterView<?> arg0) {
						//CASO NADA SEJA SELECIONADO
					}
				});
			}
		}
	});
}

[/code]

Aonde eu tenho que receber o rgCana.getCheckedRadioButtonId(); para que ele seja atualizado?

Em que ponto do código você chama o método atualizaRadio?

Você pode chamá-lo logo após carregar o rgCana.

Oi, deu certo, eu tive que carregar a rgCanaPicada dentro do onCheckedChanged e deixar explicito que a visibilidade do spinner de transbordo no if de sim é true e no if de não é false, para que ele fica atualizado durante as trocas.
Muito Obrigada!