我使用EventBus's SplashActivity
方法将来自postSticky
的数据发送到主要活动,并根据该数据使用MainActivity
在ViewPager
创建标签}。
到目前为止它效果很好,我可以在ViewPager
方法中设置@Subscribe onEvent(Example data)
。
例如:
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(Example event){
mainContentList = event.mainContentList;
if (mViewPager != null) {
setupViewPager(mViewPager, mainContentList);
}
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
}
当我们从MainActivity
致电ActivityC
,
现在不会调用@Subscribe onEvent(Example data)
,因为我们只是从SplashActivity
发布到ViewPager
,因此不会调用它,ViewPager
也不会更新。
我想要的是什么:
我想尽早从StickyPost获取数据,因此我可以在活动的OnCreate
方法中初始化DataHolder
。
我知道我可以使用应用程序级别Singleton或创建一个EventBus
类等来存储数据但是无论如何使用<?php
mysqli_connect("host", "username", "password", "dbname");
if (isset($_POST['button'])) {
mysqli_query("SELECT name,lastname FROM users ORDER BY RAND()");
$name = null;
$lastname = null;
while ($row = mysqli_fetch_array()) {
$name = $row['name'];
$lastname = $row['lastname'];
}
echo '<p><small>Output:</small></p><pre style="min-width:auto;display:table;">' . $name . '_' . $lastname . '</pre>Format: <b>name_lastname</b> <span style="width:310px;">';
}
?>
<form method="POST">
<button type="submit" class="btn btn-default" name="button">button</button>
<br>
</form>
来实现这一点?
感谢您的时间,如果您需要更多信息,请告诉我,我会更新。
答案 0 :(得分:6)
问题的解决方案非常简单,我们可以简单。我们在任何地方调用getStickyEvent
,类似这样的
示例:强>
EventBus eventbus = Bus.getInstance();
ExampleEvent event = eventbus.getStickyEvent(ExampleEvent.class);
if ( event != null ){
// Whatever we want to do with event
// and then we can remove stickyEvent if we don't need it anymore
eventbus.removeStickyEvent(event);
}
答案 1 :(得分:0)
创建事件订阅者时,必须注册它(并在销毁时取消注册)。作为official documentation中的状态,当您使用您编写的活动时:
@Override public void onStart() {
super.onStart();
EventBus.getDefault().register(this); }
@Override public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop(); }
如果你想使用单例来订阅事件,你必须在一个独特的点上初始化它,比如应用程序类,并在事件总线上注册它。