[英]How to use EventBus just for first time in Android
在我的應用程序中,我有 2 個activity
。 Activity
A和Activity
B。
對於 show Activity
B用戶應該從Activity
A轉到。
在activity
B 中,我有一個button
,我希望在單擊此button
finish
Activity B並將一個方法調用到Activity A 中。
對於這項工作,我寫了以下代碼:
baseDialog_positiveBtn.setOnClickListener(v -> {
EventBus.getDefault().postSticky(new BuyPremiumUserEvent(true));
finish();
});
對於調用方法到Activity
A 我寫下面的代碼:
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onBuyPremium(final BuyPremiumUserEvent event) {
clickedOnBuyPremium = event.isClickOnBuyPremium();
Log.e("clickedOnBuyPremium", "Event : " + clickedOnBuyPremium);
if (AppConstant.getInstance().isPackageInstalled(AppConstant.BAZAAR_PAYMENT_PACKAGE, packageManager)) {
initBazaarUserRegistered();
} else {
AppConstant.getInstance().showMessage(activity, getString(R.string.errorTitle),
getString(R.string.notInstalledBazaar), R.color.catRedColor);
}
}
當點擊Button
,調用上面的方法!
但是當點擊Button
,總是調用Activity A方法!
我的意思是:點擊后button
,甚至到Activity
C,E和更多...並在背面時,單擊button
為進入Activity
一遍撥打上面的方法Activity
一。
我想在單擊Activity
B 中的button
時調用上述方法,並非總是如此!
我該如何解決?
如果我正確理解了您的情況 - 您在一個活動中有一個按鈕來啟動 eventBus 事件,以及該事件的第二個活動訂閱者。
單擊按鈕后,您在另一個活動上運行一些注冊向導,但您的問題是這個訂閱的方法也調用了其他事件,您不想以這種方式處理。 這樣對嗎?
實際上,我認為在這種情況下沒有必要使用 eventBus。 如果您只想顯示Activity B
Activity A
Activity B
,則單擊按鈕時,只需使用 Intent 實例顯示您的活動:
Intent intent = new Intent(this, ActivityB.class)
startActivity(intent)
我可能會誤會你。 你能添加更多關於你的情況的細節嗎?
如果您需要使用 eventBus,那么您對訂閱事件的多次調用可能是導致 event sticky
的原因。 對通常的事件嘗試相同的方法:
baseDialog_positiveBtn.setOnClickListener(v -> {
EventBus.getDefault().post(new BuyPremiumUserEvent(true));
finish();
});
並在沒有粘性標志的情況下處理它們:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onBuyPremium(final BuyPremiumUserEvent event) {
//...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.