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:
- Cómo permitir que sólo 1 botón de conmutación de Android de 3 para estar en una vez
- Cómo cambiar el color de fondo del botón de alternar en Android
- Botón Toggle de Android / Botón segmentado
- Personalizar el botón alternar en Android
- Cómo activar y desactivar el botón Activar y desactivar en Android?
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" />
- Adjuntar onClickListener a ToggleButton
- Si se selecciona o no un botón de conmutación
- Eliminación de la luz indicadora verde de ToggleButton de Android
- Toggle botón en el estilo de Iphone
- Cambio de estado ToggleButton programáticamente en lugar de automáticamente en Android?
- El primer botón Toggle no está influyendo en el segundo
- Cambiar el botón utilizando dos imágenes en diferentes estados
- Cambiar el texto de encendido / apagado de un botón alternativo Android
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
- Seleccionar todas las filas y deseleccionar todas las filas en listview
- Lectura de un archivo XML desde recursos