मेरे पास नीचे नेविगेशन टैब के साथ एक गतिविधि है जो इसमें टुकड़े बदल रही है। जब मैं उन टैब पर आगे और आगे क्लिक करता हूं, तो कुछ बिंदु पर यह काम करना बंद कर देता है। कोड ठीक ठीक निष्पादित करता है क्योंकि मैंने इसमें कुछ लॉग डाल दिए हैं। लेकिन टुकड़े स्विच नहीं किए जा रहे हैं।FragmentTransaction hide/show कभी-कभी काम नहीं करता
कोड kotlin में है, लेकिन यह नहीं बल्कि सीधे आगे
fun showTabFragment(tag: String) {
val currentFragment: Fragment? = supportFragmentManager.fragments?.lastOrNull()
var fragment = supportFragmentManager.findFragmentByTag(tag)
val fragmentExists = fragment != null
if (fragment == null) {
when (tag) {
TAG_LOGBOOK -> fragment = LogbookFragment()
TAG_RECIPES -> fragment = RecipesFragment()
TAG_PROFILE -> fragment = ProfileFragment()
else -> fragment = MeetingPlacesFragment()
}
}
val transaction = supportFragmentManager.beginTransaction()
if (currentFragment != null) {
Log.i("jacek", "hiding " + currentFragment.javaClass.simpleName)
transaction.hide(currentFragment)
}
if (fragmentExists) {
Log.i("jacek", "showing " + fragment.javaClass.simpleName)
transaction.show(fragment)
} else {
Log.i("jacek", "adding " + fragment.javaClass.simpleName)
transaction.add(R.id.container, fragment, tag)
}
transaction.commit()
}
टुकड़े काफी भारी हैं। मैं कुछ हल्के लोगों के साथ प्रयास करूंगा, लेकिन फिर भी मेरी राय में कोई समस्या नहीं होनी चाहिए। क्या मैं कुछ और कोशिश कर सकता हूं?
मैं नवीनतम समर्थन लाइब्रेरी का उपयोग कर रहा हूँ - 25.2.0 इसके अलावा, मैं टुकड़े की जगह में कोई दिलचस्पी नहीं हूँ बिंदु के रूप में उन्हें पुनः बनाने के बिना crossfade एनीमेशन जोड़ने के लिए है
हो सकता है कि वहाँ एक समस्या है जब आप कॉल यह एक और रास्ता दिखाने/अपने टुकड़े को छिपाने के लिए है एक ही लेनदेन के भीतर एक ही टुकड़े पर 'छुपाएं() 'और फिर' दिखाएं() '? जैसे कि 'वर्तमान फ्रैगमेंट'' टुकड़े 'के समान टुकड़ों को संदर्भित करता है, जो निश्चित रूप से यहां हो सकता है। इसके बारे में बात करते हुए, मुझे लगता है कि यह दावा करना गलत है कि 'supportFragmentManager.fragments' सूची में अंतिम खंड अंतिम दिखाया गया टुकड़ा होगा (बल्कि हाल ही में जोड़ा गया एक)। आपको या तो सभी 'टुकड़ों' के माध्यम से फिर से शुरू करना चाहिए और उस व्यक्ति की खोज करें जिसमें 'दृश्यमान() 'सत्य है या केवल अंतिम दिखाए गए टुकड़े टैग को स्टोर करें और इसे बाद में ढूंढें। –