मेरे पास एक ऐप है जो इसके निचले नव बार नेविगेशन को संभालने के लिए कंडक्टर का उपयोग करता है। संक्षिप्तता के लिए, मैं इसे यथासंभव संक्षिप्त रूप से वर्णित करने का प्रयास करूंगा। ऐप में तर्क की एक अच्छी मात्रा है जिसे मैं यथासंभव कम से कम स्पर्श करना चाहता हूं

मुझे जो समस्या आ रही है वह ControllerChangeHandler.onChangeCompleted() से संबंधित है

नीचे की नौसेना को इस प्रकार संरचित किया गया है ..

Dashboard | Login | Doctors | Locations | More

जब उपयोगकर्ता Login टैब के माध्यम से लॉग इन करता है, Conductor मेरे Dashboard Controller पर बहुत जल्दी पॉप हो जाता है, फिर एक नई गतिविधि शुरू करता है, ताकि जब उपयोगकर्ता का बैक बटन हिट हो तो वे बॉटमनेव गतिविधि पर वापस आ जाएं और डैशबोर्ड पर लैंड करें।

मेरे पास जो समस्या है वह यह है कि उपयोगकर्ता नई गतिविधि शुरू होने से पहले आधे सेकेंड के लिए डैशबोर्ड दृश्य फ्लैश देखने में सक्षम है।

  router.popToTag(newTag, null)

^^ ChangeHandler के लिए शून्य में गुजरना चाहिए, विचारों की किसी भी अदला-बदली को रोकना चाहिए? या यह बिना किसी फैंसी एनिमेशन के विचारों की अदला-बदली करेगा ?? मेरा मानना ​​है कि यही वह जगह है जहां मेरे भ्रम का स्रोत है।

मैं उम्मीद कर रहा था कि ChangeHandler को शून्य पर सेट करने से, कोई दृश्य एनीमेशन नहीं होगा, लेकिन गतिविधि शुरू करने से पहले दृश्य अभी भी स्वैप होते हैं।

दुर्भाग्य से, मेरा लॉगिन तर्क और प्रवाह OnChangeCompleted() पर पूरी तरह से निर्भर है। तो मुझे नए नियंत्रक को पॉप करने के लिए कंडक्टर की आवश्यकता है, मुझे बस इसे उपयोगकर्ता के लिए पूरी तरह से अदृश्य होने की आवश्यकता है ...

कोई सलाह?? मुझे लगता है कि अगर कोड की लाइन के तहत सीधे मेरे प्रश्न का उत्तर दिया जाता है तो इससे मुझे बहुत मदद मिलेगी।

1
Kyle 10 सितंबर 2019, 21:05

1 उत्तर

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

कंडक्टर com.bluelinelabs.conductor.internal.NoOpControllerChangeHandler वर्ग के साथ जहाज करता है जो आपके उपयोग के मामले में फिट होना चाहिए। स्रोत को देखते हुए, यह कॉल ControllerChangeCompletedListener.onChangeCompleted() के अलावा कुछ नहीं करता है। जैसा कि मैं समझता हूं, इसका मतलब यह होना चाहिए कि कोई भी विचार जोड़ा या हटाया नहीं गया है।

null चेंज हैंडलर में पास होने के बारे में आपके प्रश्न का उत्तर देने के लिए, लाइब्रेरी में परिवर्तनों को संभालने के लिए जिम्मेदार आंतरिक विधि में निम्नलिखित कोड शामिल हैं:

if (inHandler == null) {
    handler = new SimpleSwapChangeHandler();
} else if (inHandler.hasBeenUsed && !inHandler.isReusable()) {
    handler = inHandler.copy();
} else {
    handler = inHandler;
}

जहां inHandler उस परिवर्तन हैंडलर को संदर्भित करता है जिसे आपने popToTag विधि में पास किया है। SimpleSwapChangeHandler बिना किसी एनिमेशन के दृश्यों की अदला-बदली करता है जैसा आपने पाया है।

0
Mark S 11 सितंबर 2019, 16:04