2016-04-20 9 views
7

मेरे कोटलिन फ़ंक्शन में, गतिविधि के प्रमाणीकरण को कैप्चर करने के नीचे, नीचे एक टुकड़े में मेरा ऑनवेन्ट। हालांकि, मैं उस पर ट्रिगर नहीं कर सकता।कोटलिन: क्या हम कोटलिन में इवेंटबस (ग्रीनरोबोट) की सदस्यता रद्द कर सकते हैं?

@Subscribe 
fun onEvent(event: AuthenticationEvent) { 
    if (event.isAuthenticated) { 
     startFragment(signInFragment, SignInFragment.TAG) 
    } else { 
     startFragment(signOutFragment, SignOutFragment.TAG) 
    } 
} 

मेरी build.gradle फ़ाइल में, मैं इस

compile 'org.greenrobot:eventbus:3.0.0' 

जोड़ने है वहाँ कुछ भी मैं इस ट्रिगर प्राप्त करने के लिए क्या करने की जरूरत है?

+0

आप अपना ईवेंट कैसे पोस्ट करते हैं? अपनी गतिविधि में अपना पंजीकृत इवेंटबस रखें? कृपया अधिक जानकारी जोड़ें। – yennsarah

+0

https://github.com/greenrobot/EventBus/issues/286 –

+0

मैंने रेज़्यूम पर पंजीकरण किया है, और रद्द करें पर रोकें। घटना का एक ही पोस्ट जावा में किसी अन्य वर्ग पर कब्जा कर लिया जा सकता है। – Elye

उत्तर

3

कोटलिन के साथ एनोटेशन प्रोसेसर का उपयोग करने के लिए, आपको Kotlin Annotation Processor tool (kapt) का उपयोग करने की आवश्यकता है।

अपने build.gradle को यह करें:

apply plugin: 'kotlin-kapt' 

According to GreenRobot (और मेरे परीक्षण से इसकी पुष्टि), यह सब आप @Subscribe प्राप्त करने की आवश्यकता है।

+1

इवेंटबस 3.1.1 के बाद से, हमें इसे और जोड़ने की आवश्यकता नहीं है। वैसे भी, यह सही कामकाज है। –

0

आप स्क्वायर Otto का उपयोग कर सकते हैं, जो वही काम करता है और कोटलिन के साथ पूरी तरह से काम करता है। हालांकि, सावधान रहें क्योंकि इवेंटबस एंड्रॉइड कोड को कम करने के लिए प्रवण हैं, और यही कारण है कि उन्होंने आरएक्स के पक्ष में ढांचे को हटा दिया है।

+0

यह परियोजना आरएक्सजेवा और आरएक्स एंड्रॉइड के पक्ष में बहिष्कृत है। ये परियोजनाएं एक ही घटना-संचालित प्रोग्रामिंग मॉडल को ओटो के रूप में अनुमति देती हैं, लेकिन वे अधिक सक्षम हैं और थ्रेडिंग के बेहतर नियंत्रण प्रदान करते हैं। यदि आप ओटो से आरएक्स में माइग्रेट करने पर मार्गदर्शन की तलाश में हैं, तो यह पोस्ट अच्छी शुरुआत है। https://blog.kaush.co/2014/12/24/implementing-an-event-bus-with-rxjava-rxbus/ –

2
  1. @Subscribe टिप्पणी के साथ सुनिश्चित करें कि आपके ईवेंट हैंडलर समारोह सार्वजनिक
  2. build.gradle फ़ाइल में है कोड जोड़ बनाओ:

    apply plugin: 'kotlin-kapt' 
    
    implementation "org.greenrobot:eventbus:3.0.0" 
    kapt 'org.greenrobot:eventbus-annotation-processor:3.0.1' 
    
  3. आप Subscriber Index का उपयोग करना चाहते हैं, तो आप कोड जोड़ build.gradle पर भी:

    kapt { arguments { arg('eventBusIndex', 'your-package.MyEventBusIndex') } }