获取切换按钮在不同类中的状态android
我在我的MAINACTIVITY.java中使用了ToggleButton。当它从另一个类GPSLOCATION.java中获取当前位置并更新到服务器时。获取切换按钮在不同类中的状态android
<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即运行,如果切换按钮是ON然后每隔一个分钟位置被取出,并在服务器上更新。 相反,我想获得GPSLOCATION.java中的TOGGLEBUTTON状态,位于onLocationChanged方法中,如果打开,那么我需要将它更新到服务器,我知道任何人都可以帮助我摆脱这种情况。
所以你想在另一个类中获得这个按钮的当前状态?您可以使用EventBus
?
请参见:http://square.github.io/otto/
你可以断火时的开关切换的Event
,然后@Subscribe
在要处理的更新到服务器类的事件。
例如:
注册既你的类与EventBus(假设你初始化应用程序级别的EventBus),你可以在onCreate
称之为:
MyApplication.getInstance().getBus().register(this);
或沿着线的东西,这将注册所需班级以接收或能够在公交车上发布活动。
请务必在两个课程中都这样做!
然后,你必须创建一个事件被张贴,是这样的:
public class ToggleEvent {
public ToggleEvent() {
//
}
}
然后发布事件时onToggled
被称为像这样:
GPSLocation
类,你可以
MyApplication.getInstance().getBus().post(new ToggleEvent());
然后有一种方法,如:
@Subscribe public void retrieveToggleEvent(ToggleEvent event) {...}
这将检索触发事件时(即当调用onToggle
并且事件被触发!)。那么你应该可以在retrieveToggleEvent
上发布到服务器。
您还可以使用简单的getter
方法沿总线传递有用的数据。在你的情况下,重写onToggled
可能会更好,那么你可以通过总线上交换机的布尔状态,并且在你的@Subscribe
方法GPSLocation
中处理它的真/假。
由于在类注册总线将留在记忆永远,你应该想想注销总线onDestroy
:
MyApplication.getInstance().getBus().unregister(this);
希望这有助于!