>

Android를 처음 사용하고 EventBus를 사용하여 Fragment에서 컨테이너 활동으로 메시지를 보내려고합니다. 그러나 오류가 발생했습니다 :

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)
    }
}

다음은 프래그먼트 클래스에 있습니다

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
    }
}

이것이 pyzwyz에서 라이브러리가 추가되는 방법입니다.  파일.

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') } }

  • 답변 # 1

    와이즈 비즈

    그러면 단검과 rx에 익숙해 져야합니다. 이벤트 버스는 안드로이드에서나쁜 일이며 종종 필요한 것보다 더 복잡하게 만듭니다.

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

  • 답변 # 2

    가입 한 메소드 이름을 다음으로 변경하십시오 :

    I am new to Android ...

    @Lord Flash가 제안한 것처럼

    -eventbus 대신 rxjava를 사용하십시오. onMessageEvent(event: TaskListFragment.TaskCreateSelectEvent) 살펴보기  (rx 2.0) 수업

    PublishSubject/PublishProcessor

  • 이전 nginx - phusion passenger - 'service [passenger]'자원에 대해`start '조치 실행 오류
  • 다음 powershell - 어떻게 목록에있는 모든 파일을 확장자를 추가합니다