एक टुकड़े में टूथपिक डीआई का उपयोग करने का प्रयास करते समय मुझे अजीब त्रुटि हो रही है:

tothpick.registries.NoFactoryFoundException: android.app.Application वर्ग के लिए कोई फ़ैक्टरी नहीं मिली। जांचें कि कक्षा में या तो @Inject एनोटेटेड कंस्ट्रक्टर है या इसमें @Inject एनोटेट सदस्य हैं। यदि रजिस्ट्रियों का उपयोग कर रहे हैं, तो जांच लें कि वे एनोटेशन प्रोसेसर तर्कों के साथ ठीक से सेटअप हैं।

मेरा टुकड़ा:

public class ApplicationMenu extends SidebarFragment {

@Inject ApplicationsService applicationsService;
@Inject SectionsService sectionsService;

private EventBus bus = EventBus.getDefault();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Toothpick.inject(this, Toothpick.openScope(LauncherActivity.class)); // <- Erroring here       
}

...

}

गतिविधि:

public class LauncherActivity extends SidebarActivity {

...

@Override
protected void onCreate(Bundle savedInstanceState) {

    Scope scope = Toothpick.openScopes(LauncherApplication.class, LauncherActivity.class);
    scope.bindScopeAnnotation(LauncherActivitySingleton.class);
    scope.installModules(new LauncherActivityModule(this));
    super.onCreate(savedInstanceState);
    Toothpick.inject(this, scope);

    setContentView(R.layout.activity_launcher);
    ButterKnife.bind(this);

    ...
}

...

}

अजीब बात यह है कि मुझे केवल टुकड़ों में त्रुटि मिलती है, अन्य जगहों पर सभी इंजेक्शन (व्यूरेंडरर्स, एडेप्टर, सर्विसेज आदि) बिना किसी समस्या के ठीक काम करते हैं

2
dipcore 5 मई 2018, 06:10

1 उत्तर

सबसे बढ़िया उत्तर

मैंने इसका पता लगा लिया। मैं गलती से अपनी सेवाओं में से एक में आवेदन का दायरा बंद कर देता हूं। वह सेवा टुकड़ों में उपयोग कर रही थी जो त्रुटि का मामला है।

दुर्भाग्य से त्रुटि संदेश कोई उपयोगी जानकारी प्रदान नहीं करता है और समस्या को खोजने का एकमात्र तरीका सभी कोड का विश्लेषण और डीबग करना है।

इसलिए टूथपिक डी का उपयोग करते हुए आपको स्कोप लाइफ-साइकल से बहुत सावधान रहना होगा।

0
dipcore 18 मई 2018, 19:16