में 2 अलग-अलग दायरों सम्मिलित करें मैं एक आवेदन विस्तृत सिंगलटन प्रदाता के रूप में moduleA सेटअप, ModuleB एक उपयोगकर्ता से संबंधित वस्तु प्रदाताडैगर वी 2: एक वस्तु
मेरे उपयोगकर्ता प्रदर्शन टुकड़ा दूसरों को संदेश भेजने के लिए प्रणाली विस्तृत बस का उपयोग करेगा के रूप में और प्रदर्शित करने के लिए उपयोगकर्ता से संबंधित वस्तु का उपयोग करें।
समस्या एक ऑब्जेक्ट में अलग-अलग स्क्रॉप कक्षा को इंजेक्ट नहीं कर सकती है। घटक का उपयोग करें .getX विधि ठीक काम करता है, लेकिन इंजेक्ट पसंदीदा तरीका है। त्रुटि संदेश: @UserScope अंतर स्कोप के साथ बाइंडिंग का संदर्भ नहीं हो सकता है: @Provides @Singleton बस ModuleA.provideBus()
@Module
public class ModuleA {
@Provides @Singleton Bus provideBus() {...}
}
मॉड्यूल बी उपयोगकर्ता से संबंधित जानकारी प्रदाता
@Module
public class ModuleB{
private final User user;
public ModuleB(User user) {...}
@Provides @UserScope User provideUser() {}
@Provides @UserScope UserManager provideUserManager() {}
}
अवयव सेटअप के रूप में निम्नलिखित की तरह:
@Component (modules={ModuleA.class})
@Singleton
public interface ComponentA {
Bus getBus();
void inject(ClassA target);
}
@Component(modules={ModuleB.class})
@UserScope
public interface ComponentB {
User getUser();
UserManager getUserManager();
void inject(ClassA target);
}
class UserFragment exrtends Fragment {
@Inject Bus bus;
@Inject UserManager userManager;
public void onCreate() {
getComponentA().inject(this);
getComponentB().inject(this);
}
}
क्या होगा यदि 'MainActivityComponent' एक सबकंपोनेंट है? –