>

나는 Android에 새로운 기능을 사용하고 이벤트 버스를 사용하여 컨테이너 활동으로의 컨테이너 활동으로 메시지를 보내려고합니다. 그러나 오류가 발생합니다.

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

다음은 EventBus와 관련된 활동 클래스의 code입니다.

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 Class에 있습니다

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

라이브러리가 어떻게 추가되는 방법입니다.빌드파일.

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

내가 무엇을 잘못하고 있는지 어떤 생각?

addFragment 메소드를 어디에서 호출합니까?

Raghunandan2021-04-02 17:01:42

addFragment는 아직 호출되지 않았습니다. 더 많은 조각을 추가하기 위해 호출 할 계획이었습니다. 하지만 현재는 이벤트를 받고 있습니다.

Khawar2021-04-02 17:01:42

작업 목록 조각이 활동에 첨부되어 있는지 확인하고 싶었습니다. 귀하의 code는 괜찮아 보이고 직접 시도했습니다.

Raghunandan2021-04-02 17:01:42

실제로 .xml 파일을 통해 Fragment를 추가했습니다. 나도 그 이유를 알 수 없습니다.

Khawar2021-04-02 17:01:42

나는 당신의 code를 실행했고 작동합니다.

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