2015-08-14 6 views
0

У меня есть следующий код, который должен отображать другой текст на основе того, включен или выключен переключатель. Но на переключателе ничего не отображается, когда я нажимаю переключатель.Ничего не происходит, когда я нажимаю переключатель

MainActivity.java

package com.hfad.myapplication; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.CompoundButton; 
import android.widget.Switch; 


public class MainActivity extends Activity { 
    Switch sw; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     sw=(Switch)findViewById(R.id.switchdemo); 

     sw.setOnCheckedChangeListener(
       new CompoundButton.OnCheckedChangeListener() { 
        @Override 
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
         if (isChecked) { 
          sw.setTextOn("This switch is: on"); 
         } 
         else { 
          sw.setTextOff("This switch is: off"); 
         } 
        } 
       } 
     ); 
    } 

} 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <Switch 
     android:id="@+id/switchdemo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 
</LinearLayout> 
+0

что вы хотите ??? –

+0

Мне нужен другой текст для отображения в состоянии включения и выключения. –

+0

Вы получаете ошибку или что? – pkBhati

ответ

0

Просто замените

sw.setTextOn("This switch is: on"); 

с

sw.setText("This switch is: on"); 

и

sw.setTextOff("This switch is: off"); 

с

sw.setText("This switch is: off"); 

его работы.

1

коммутатор не поддерживает setTextOn/setTextOff во время выполнения.

Существует Hacky работа вокруг:

Вам нужен класс, который расширяет переключатель и использовать это:

@Override 
public void requestLayout() { 
IslLog.i(TAG, "requestLayout"); 
try { 
    java.lang.reflect.Field mOnLayout = Switch.class.getDeclaredField("mOnLayout"); 
    mOnLayout.setAccessible(true); 
    mOnLayout.set(this, null); 
    java.lang.reflect.Field mOffLayout = Switch.class.getDeclaredField("mOffLayout"); 
    mOffLayout.setAccessible(true); 
    mOffLayout.set(this, null); 
} catch (Exception x) { 
    Log.e(TAG, x.getMessage(), x); 
} 
super.requestLayout(); 
} 

затем реализовать, что использование класса & это:

sw.setTextOn("Whatever"); 
sw.requestLayout(); 
Смежные вопросы