我想使用eventbus库作为示例,但它不起作用,你觉得怎么样?
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btn1 = findViewById<Button>(R.id.button)
btn1.setOnClickListener {
EventBus.getDefault().post(SendEvent("Meara"))
startActivity ( Intent ( this , ActivityOne::class.java ) )
}
}
}
上面广播事件总线的组件
class SendEvent( string : String) {
var str : String = string
}
保存数据的类
终于有一个接收数据的组件了
class ActivityOne : AppCompatActivity() {
private lateinit var txt : TextView
override fun onCreate(savedInstanceState : Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_one)
EventBus.getDefault().register(this)
txt = findViewById(R.id.txt1)
}
override fun onDestroy() {
EventBus.getDefault().unregister(this)
super.onDestroy()
}
@Subscribe
fun onEvent (event : SendEvent ) {
txt.text = event.str
}
}
您正在做的是在没有事件监听器的情况下发送事件,因为您在发送事件后启动了 ActivityOne。 你应该做的是发布一个置顶事件:
EventBus.getDefault().postSticky(SendEvent("Meara"))
然后在接收端你应该监听粘性事件:
@Subscribe(sticky = true)
fun onEvent (event : SendEvent ) {
txt.text = event.str
} @Subscribe
fun onEvent (event : SendEvent ) {
txt.text = event.str
}
这样你就可以监听事件。
已经太晚了,但我认为这个答案对新人会有一点帮助。