홈>
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
-
답변 # 2
가입 한 메소드 이름을 다음으로 변경하십시오 :
I am new to Android ...
-eventbus 대신 rxjava를 사용하십시오.
onMessageEvent(event: TaskListFragment.TaskCreateSelectEvent)
살펴보기 (rx 2.0) 수업PublishSubject/PublishProcessor
관련 자료
- Kotlin의 버튼이 작동하지 않는 이유는 무엇입니까? (안드로이드 스튜디오)
- android - Kotlin urigetQueryParameter가 hashroute에서 작동하지 않음
- android - kotlin에서 Parcelable이 제대로 작동하지 않습니다
- android - Kotlin 코드의 액세스 토큰이 작동하지 않는 이유는 무엇인가요?
- android - kotlin - 슬쩍 새로 고침 레이아웃 후 페이지 매김 recyclerview가 작동하지 않음
- intellij idea - @PropertyKey Annotation은 Kotlin과 작동하지 않지만 Java와 작동합니다
- Firebase 인증 용 kotlin 코드가 작동하지 않는 이유는 무엇입니까?
관련 질문
- android - Anroid RecyclerView의 DataBinding이 작동하지 않음 (Kotlin)
- firebase - Android 스튜디오 앱 로그인 실패 및 앱 충돌
- android - 사용자 정의보기에서 ViewBinding이 작동하지 않습니다 (보기를 표시하지 않음)
- android - 코 루틴 코 틀린에서 어떻게 가치를 얻습니까?
- android 단위 테스트 - javalangunsatisfiedlinkerror : javalibrarypath에 없음
- android - AndroidX 환경 설정 라이브러리에서 사용자 정의 SharedPreferences 이름을 사용하는 방법은 무엇입니까?
- date - Android Room은 오늘의 모든 시간을 삽입합니다
- android - 원시 쿼리 삽입 후 SQLite 생성 ID
- java - 사용자가 앱을 종료하고 Android의 알림 메뉴로 이동하려면 어떻게해야합니까?
- android - Jetpack Compose Found 인터페이스 rPluginContext 설정을 시도 할 때 문제 발생
와이즈 비즈
그러면 단검과 rx에 익숙해 져야합니다. 이벤트 버스는 안드로이드에서나쁜 일이며 종종 필요한 것보다 더 복잡하게 만듭니다.
https://www.google.de/search?q=android+rxjava+instead+of+eventbus