Foros del Web » Programando para Internet » Android »

Problema con los listener

Estas en el tema de Problema con los listener en el foro de Android en Foros del Web. Estoy desarrollando mi primera aplicación para android y tengo un problema con los listener. Lo que prentendo hacer es crear un checkbox que al marcarlo ...
  #1 (permalink)  
Antiguo 17/08/2011, 10:32
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Problema con los listener

Estoy desarrollando mi primera aplicación para android y tengo un problema con los listener.
Lo que prentendo hacer es crear un checkbox que al marcarlo haga visible un linearlayout. este es el código que estoy utilizando:



enableViews.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
//@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
myViewsLayout.setVisibility(View.VISIBLE);}

else {
myViewsLayout.setVisibility(View.GONE); }
}
});

Mi problema es que al ejecutar el código en el emulador, se detecta un error inesperado y se cierra la aplicación. Alguna idea de como solucionarlo?
  #2 (permalink)  
Antiguo 17/08/2011, 12:12
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 4 meses
Puntos: 74
Respuesta: Problema con los listener

Podrías poner todo tu código incluyendo el main, por que viendo nada mas esa parte no podría decirte donde esta el error
  #3 (permalink)  
Antiguo 18/08/2011, 08:08
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problema con los listener

este sería mi código hasta ahora:

package isma.apk;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.TextView;

public class MyActivity extends Activity {

private CheckBox enableViews;
private TextView eventsTextView;
private LinearLayout myViewsLayout;
private RadioButton myRadioButton;


//-----------------------Oncreate-----------------//
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// llamamos a nuestro método de inicialización
initConfig();
}

//-----------------------------------------------------//
//Initconfig

private void initConfig() {
enableViews = (CheckBox) findViewById(R.id.enableViews);
eventsTextView = (TextView) findViewById(R.id.eventsTextView);
myViewsLayout = (LinearLayout) findViewById(R.id.myViewsLayout);
myRadioButton = (RadioButton) findViewById(R.id.myRadioButton);
setContentView(R.layout.main);

enableViews.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
myViewsLayout.setVisibility(View.VISIBLE);}

else {
myViewsLayout.setVisibility(View.GONE); }
}
});
}
}
  #4 (permalink)  
Antiguo 18/08/2011, 09:50
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 4 meses
Puntos: 74
Respuesta: Problema con los listener

Bueno ya e revisado tu codigo, todo funciona bien menos en la parte donde tienes:

Cita:
enableViews.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
enableViews.setVisibility(View.VISIBLE);}

else {
enableViews.setVisibility(View.GONE); }
}
});
esa parte es la que te produce el error.

Creo que el problema esta en el CompoundButton que es la primera vez que veo que alguien lo usa, cual es tu idea para indicar cuando quieres verlo visible o no verlo?
  #5 (permalink)  
Antiguo 19/08/2011, 06:53
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problema con los listener

Lo que quiero hacer es que cuando se detecte un cambio en el checkbox, se crea un objeto compound button que comprobará si el checkbox está ahora marcado o desmarcado. Si está marcado, hará visible el linearlayout.
Estoy siguiendo una guía de programación y Tampoco tengo muy claro el uso de compoundbutton o si hay alguna alternativa a lo que estoy haciendo
  #6 (permalink)  
Antiguo 19/08/2011, 11:44
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 4 meses
Puntos: 74
Respuesta: Problema con los listener

Jejeje sabes el problema de todo el asunto que para usar el compoundbutton depende del checkbox por eso te marca el error; ademas para leer si esta digamos "presionado" es leer su valor booleano o sea si esta presionado tendra un valor "true" igual a 1 y si no esta presionado tendra un valor "false". Deja veo si puedo modificarlo un poco; ademas si haces invisible todo tu linearlayout ya no podras regresar a visible... por que esta invisible jajaja

Última edición por zero_master; 19/08/2011 a las 11:51
  #7 (permalink)  
Antiguo 19/08/2011, 12:46
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 4 meses
Puntos: 74
Respuesta: Problema con los listener

Listooo!!!! ya resolví tu problema aunque no hago desaparecer todo el Layout por lo que te comente lo hago es desaparecer los de mas componentes cuando el CheckBox es verdadero el código quedo de la siguiente forma:
Cita:
private void initConfig() {
enableViews = (CheckBox) findViewById(R.id.enableViews);
eventsTextView = (TextView) findViewById(R.id.eventsTextView);
myViewsLayout = (LinearLayout) findViewById(R.id.myViewsLayout);
myRadioButton = (RadioButton) findViewById(R.id.myRadioButton);
enableViews.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
eventsTextView.setVisibility(View.GONE);
myRadioButton.setVisibility(View.GONE);
}
else
{
eventsTextView.setVisibility(View.VISIBLE);
myRadioButton.setVisibility(View.VISIBLE);
}

}
});
}
Si te das cuenta saque el setContentView(R.layout.main); y lo puse aquí mira:
Cita:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// llamamos a nuestro método de inicialización
initConfig();
}
Ademas agregue una librería mas:
Cita:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListe ner;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.TextView;
Suerte en lo que sigas espero te sirva
  #8 (permalink)  
Antiguo 20/08/2011, 06:14
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problema con los listener

Muchas gracias, ahora funciona perfectamente
  #9 (permalink)  
Antiguo 20/08/2011, 10:33
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 4 meses
Puntos: 74
Respuesta: Problema con los listener

De nada mi buen, cambia el tema si puedes y ponle (solucionado) si se puede si no pues ya déjalo así jeje

Etiquetas: programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:04.