gpt4 book ai didi

android - Kotlin 的 EventBus 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:41 25 4
gpt4 key购买 nike

我是 Android 新手,正在尝试使用 EventBus 将消息从 Fragment 发送到其容器 Activity。但是,我收到错误:

D/EventBus: No subscribers registered for event class com.app.todo.controllers.task.TaskListFragment$TaskCreateSelectEvent

以下是与EventBus相关的Activity类中的代码:

public class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

@Subscribe(threadMode = ThreadMode.MAIN)
fun onTaskCreateSelectEvent(event: TaskListFragment.TaskCreateSelectEvent) {
Log.d("TAG", "On Main Activity")
}

fun addFragment(fragment: Fragment) {
val transaction = supportFragmentManager.beginTransaction()
transaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit)
transaction.add(R.id.task_fragment_container, fragment)
transaction.addToBackStack(fragment.javaClass.simpleName)
transaction.commit()
}

public override fun onStart() {
super.onStart()
EventBus.getDefault().register(this)
}

public override fun onStop() {
super.onStop()
EventBus.getDefault().unregister(this)
}

}

下面是Fragment类

public class TaskListFragment : Fragment() {
private var fab: FloatingActionButton? = null

public class TaskCreateSelectEvent {
var fab: FloatingActionButton? = null
}

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
var view = inflater!!.inflate(R.layout.task_list_fragment, container, false)
fab = view.findViewById<FloatingActionButton>(R.id.fab)
fab!!.setOnClickListener {
val selectEvent = TaskCreateSelectEvent()
EventBus.getDefault().post(selectEvent)
}
return view
}
}

这是在 build.gradle 文件中添加库的方式。

apply plugin: 'kotlin-kapt'

dependencies {
compile 'org.greenrobot:eventbus:3.0.0'
kapt 'org.greenrobot:eventbus-annotation-processor:3.0.1' }

kapt {
arguments {
arg('eventBusIndex', 'com.app.todo.controllers.MyEventBusIndex')
}
}

知道我做错了什么吗?

最佳答案

I am new to Android ...

那么你最好熟悉一下 dagger 和 rx。事件总线在 Android 上是一件坏事,通常会使事情变得比必要的更复杂。

https://www.google.de/search?q=android+rxjava+instead+of+eventbus

关于android - Kotlin 的 EventBus 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45437829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com