سلام
تکه کد هایی که مربوط به postSnicky رو به صورت زیر در viewModel و activity وارد کردم ولی متدی که subcribe شده تو activity جرا نمیشه در نتیجه badge نمایش داده نمیشه مشکل از کدوم قسمته
viewModel
fun getCartItemsCount() {
if (!TokenContainer.token.isNullOrEmpty()) {
cartRepository.getCartItemCount()
.subscribeOn(Schedulers.io())
.subscribe(object : NikeSingleObserver<CartItemCount>(compositeDisposable) {
override fun onSuccess(itemCount: CartItemCount) {
Timber.i("getCartItemsCount ===== >>> ${itemCount.count}")
EventBus.getDefault().postSticky(itemCount)
}
})
}
}
activity این متود کال نمیشه
@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)
fun onCartItemsCountChangeEvent(cartItemCount: CartItemCount) {
Timber.i("-------- >>> change event badge ${cartItemCount.count}")
val badge = bottomNavigationMain.getOrCreateBadge(R.id.cart)
badge.badgeGravity = BadgeDrawable.BOTTOM_START
badge.backgroundColor = MaterialColors.getColor(bottomNavigationMain, R.attr.colorPrimary)
badge.number = cartItemCount.count
// badge.verticalOffset = 10.toPx
badge.isVisible = cartItemCount.count > 0
}
بر اساس داکیومت باید رجیستر انجام بشه مشکل حل میشه
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
// UI updates must run on MainThread
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(MessageEvent event) {
textField.setText(event.message);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
سلام
قبلا عمل رجیستر/آنرجسیتر رو در (NikeActivity) انجام دادیم، بررسی کنید که (MainActivity) شما این کلاس رو اکستند کرده باشه