ToggleButton icon indicating copy to clipboard operation
ToggleButton copied to clipboard

setToggleOn(false), setToggleOff(false),Init State Error

Open totemtec opened this issue 9 years ago • 4 comments

两个ToggleButton,状态互斥 初始化的时候,设置状态不带动画

t1.setToggleOn(false); t2.setToggleOff(false);

发现第一次切换的时候,t1和t2总有1个状态不正常

如果使用 t1.setToggleOn(true); t2.setToggleOff(true); 这个时候就正常

这个是不是bug呢? 如果是bug,也可以不改,我可以使用带动画的初始化方法

代码如下:

public class SettingNotificationActivity { private ToggleButton fixtimeToggle; private ToggleButton realtimeToggle;

//设置的最终值,服务器保存成功才生效,启动时从设置读取
private boolean realtimeNotification = false;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_setting_notification);

    initView();
    initData();
}

public void initView()
{
    fixtimeToggle = findView(R.id.fix_time_toggle);
    fixtimeToggle.setOnToggleChanged(new ToggleButton.OnToggleChanged()
    {
        @Override
        public void onToggle(boolean on)
        {
            saveUserSetting(!on);
        }
    });

    realtimeToggle = findView(R.id.real_time_toggle);
    realtimeToggle.setOnToggleChanged(new ToggleButton.OnToggleChanged()
    {
        @Override
        public void onToggle(boolean on)
        {
            saveUserSetting(on);
        }
    });
}

public void initData()
{
    realtimeNotification = false;
    showSetting(false);  //使用这句初始化第一次切换有问题

    //showSetting(true); //使用这句初始化就没有问题
}

public void showSetting(boolean animate)
{
    if (realtimeNotification)
    {
        realtimeToggle.setToggleOn(animate);
        fixtimeToggle.setToggleOff(animate);
    }
    else
    {
        realtimeToggle.setToggleOff(animate);
        fixtimeToggle.setToggleOn(animate);
    }
}

public void saveUserSetting(final boolean realtime)
{
    realtimeNotification = realtime;
    showSetting(true);
}

}

totemtec avatar Mar 21 '15 08:03 totemtec

@totemtec 应该是个bug,试下我pull上去的修复

xuhuan avatar Apr 09 '15 00:04 xuhuan

@xuhuan @zcweng 此问题仍然存在 setToggleOn(false); setToggleOff(false);时候开关会互斥。

qiguoqiang avatar May 09 '16 03:05 qiguoqiang

May be the "public void setToggleOn(boolean animate) {...} " don't work properly. Hope @zcweng fix this problem. Thank you!

HayTran avatar Jan 20 '18 08:01 HayTran

good

xneosun avatar Jun 27 '18 05:06 xneosun