获取不同类android中的Toggle Button状态

时间:2015-03-19 11:14:58

标签: java android android-togglebutton

我在MAINACTIVITY.java中使用了ToggleButton。当它从另一个类GPSLOCATION.java获取当前位置并更新到服务器时。

<ToggleButton
            android:id="@+id/switch1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:onClick="onToggleClicked" />

public void onToggleClicked(View view) {
boolean on = ((ToggleButton) view).isChecked();

if (on) {
        update_alert();
        } else {            
            timerAlert.cancel();
   }        
}

但是由于它通过使用TimerTask运行,即,如果TOGGLEBUTTON为ON,那么每隔一分钟就会获取LOCATION并在服务器中更新。 相反,我希望在 onLocationChanged 方法下的GPSLOCATION.java中获取TOGGLEBUTTON的状态,如果是,那么我需要将其更新到服务器,我知道有可能任何人都可以帮我摆脱这个场景。

1 个答案:

答案 0 :(得分:1)

所以你想在另一个班级中获得这个按钮的当前状态吗?

你能否使用EventBus

请参阅:http://square.github.io/otto/

切换开关时可以触发Event,然后@Subscribe触发要处理服务器更新的类中的事件。

例如:

使用EventBus注册您的两个类(假设您在应用程序级别初始化EventBus),您可以在onCreate中调用它:

MyApplication.getInstance().getBus().register(this); 

或者类似的东西,这将注册所需的类以接收或能够在公共汽车上发布事件。

确保在两个班级都这样做!

然后你必须创建一个要发布的事件,例如:

    public class ToggleEvent {

    public ToggleEvent() {
        //
    }
}

然后在调用onToggled时发布事件:

MyApplication.getInstance().getBus().post(new ToggleEvent());

然后在GPSLocation课程中,您可以使用以下方法:

@Subscribe public void retrieveToggleEvent(ToggleEvent event) {...}

这将在触发事件时检索事件(即调用onToggle并触发事件!)。然后,您应该能够在retrieveToggleEvent

中发布到服务器

您还可以使用简单的getter方法在总线上传递有用的数据。在你的情况下,覆盖onToggled可能更好,然后你可以通过总线中交换机的布尔状态,并在@Subscribe GPSLocation方法中处理它的真/假

由于在课程中注册总线将永远留在内存中,您应该考虑取消注册总线onDestroy

MyApplication.getInstance().getBus().unregister(this);

希望这有帮助!