Ejemplo de ToggleButton

Estoy desarrollando una aplicación usando un botón de conmutación, entré 1 o 0 en EditText . Cuando se hace clic en el botón, el botón de conmutación tiene que cambiar si entro 1 el botón de conmutación muestra TOGGLE ON , si ingreso 0 el botón de conmutación tiene que mostrar TOGGLE OFF . No puedo obtener valores de conmutación cuando se hace clic en el botón.

Mi código es:

 public class MainActivity extends Activity { String editString=""; Button btn; EditText ed; ToggleButton toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.btn); ed = (EditText)findViewById(R.id.ed); toggle = (ToggleButton)findViewById(R.id.toggBtn); editString = ed.getText().toString(); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle.toggle(); if(editString.equals("1")){ toggle.setTextOff("TOGGLE ON"); } else if(editString.equals("0")){ toggle.setTextOn("TOGGLE OFF"); } } }); } } 

archivo xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="vertical"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ed"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn" android:text="Summit"/> <ToggleButton android:id="@+id/toggBtn" android:layout_below="@+id/text6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" /> 

Sólo toggle.toggle(); quitar la línea toggle.toggle(); desde el método toggle() oyente de clics siempre restablecerá el valor del botón de alternancia.

Y como usted está intentando tomar el valor de EditText en la variable de la secuencia que sigue siendo siempre iguales que usted está consiguiendo valor en onCreate() así que mejor utiliza directamente el EditText para conseguir el valor de él en su oyente del onClick .

Simplemente cambie su código como abajo su trabajo bien ahora.

  btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //toggle.toggle(); if ( ed.getText().toString().equalsIgnoreCase("1")) { toggle.setTextOff("TOGGLE ON"); toggle.setChecked(true); } else if ( ed.getText().toString().equalsIgnoreCase("0")) { toggle.setTextOn("TOGGLE OFF"); toggle.setChecked(false); } } }); 
 <ToggleButton android:id="@+id/togglebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="Vibrate on" android:textOff="Vibrate off" android:onClick="onToggleClicked"/> 

Dentro de la actividad que aloja este diseño, el método siguiente maneja el evento click:

 public void onToggleClicked(View view) { // Is the toggle on? boolean on = ((ToggleButton) view).isChecked(); if (on) { // Enable vibrate } else { // Disable vibrate } } 

Intente estos botones de Toggle

test_activity.xml

 <ToggleButton android:id="@+id/togglebutton" android:layout_width="100px" android:layout_height="50px" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:onClick="toggleclick"/> 

Test.java

 public class Test extends Activity { private ToggleButton togglebutton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); togglebutton = (ToggleButton) findViewById(R.id.togglebutton); } public void toggleclick(View v){ if(togglebutton.isChecked()) Toast.makeText(TestActivity.this, "ON", Toast.LENGTH_SHORT).show(); else Toast.makeText(TestActivity.this, "OFF", Toast.LENGTH_SHORT).show(); } } 
 @Override public void onClick(View v) { // TODO Auto-generated method stub editString = ed.getText().toString(); if(editString.equals("1")){ toggle.setTextOff("TOGGLE ON"); toggle.setChecked(true); } else if(editString.equals("0")){ toggle.setTextOn("TOGGLE OFF"); toggle.setChecked(false); } } 

Creo que lo que se intenta es semánticamente igual que un botón de opción cuando 1 es cuando una de las opciones está seleccionada y 0 es la otra opción.

Sugiero usar el botón de radio proporcionado por Android por defecto.

Aquí está cómo usarlo: http://www.mkyong.com/android/android-radio-buttons-example/

y la documentación de Android está aquí:

http://developer.android.com/guide/topics/ui/controls/radiobutton.html

Gracias.

Mover esto

  btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { editString = ed.getText().toString(); 

dentro de onClick

También cambia el estado del botón de Google si su 0 o 1

http://developer.android.com/guide/topics/ui/controls/togglebutton.html

Ejemplo:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:text="Button" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="26dp" android:ems="10" > <requestFocus /> </EditText> <Switch android:id="@+id/switch1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="51dp" android:text="Switch" /> <ToggleButton android:id="@+id/togglebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_below="@+id/switch1" android:layout_marginTop="58dp" android:onClick="onToggleClicked" android:textOff="Vibrate off" android:textOn="Vibrate on" /> </RelativeLayout> 

MainActivity.java

 public class MainActivity extends Activity implements OnClickListener { EditText ed; Switch sb; ToggleButton tb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed = (EditText) findViewById(R.id.editText1); Button b = (Button) findViewById(R.id.button1); sb = (Switch)findViewById(R.id.switch1); tb = (ToggleButton)findViewById(R.id.togglebutton); b.setOnClickListener(this); } @Override public void onClick(View v) { String s = ed.getText().toString(); if(s.equals("1")){ tb.setText("TOGGLE ON"); tb.setActivated(true); sb.setChecked(true); } else if(s.equals("0")){ tb.setText("TOGGLE OFF"); tb.setActivated(false); sb.setChecked(false); } } } 

Encaje

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

  • Cambiar "en" el color de un interruptor
  • ¿Cómo desactivo el botón de conmutación en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.