मैं MainActivity
में एक मेनू टूलबार बना रहा हूं, जिसमें शरीर का टुकड़ा है (एकमात्र टूलबार गतिविधि में सेट है टुकड़ों के भीतर नहीं)
जब डिफ़ॉल्ट टुकड़ा (होमफ्रैगमेंट) सेट किया जाता है, तो मैं टूलबार मेनू से search
और sort
आइकन छिपाना चाहता हूं, अन्यथा उन्हें अन्य ContentFragment
में दिखाने के लिए
ContentFragment
अलग-अलग टूलबार नाम ले सकते हैं verbs, nouns, pronouns..
और HomeFragment
केवल Home
यही कारण है कि मैं if(supportActionBar!!.title== "Home") {
का उपयोग कर रहा हूं
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
transaction(HomeFragment)...commit()
.....
}
//below bundle ends
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
if(supportActionBar!!.title== "Home") {
menu?.findItem(R.id.db_menu_search)?.isVisible = false
menu?.findItem(R.id.db_menu_sort)?.isVisible = false
}else{
menu?.findItem(R.id.db_menu_search)?.isVisible = true
menu?.findItem(R.id.db_menu_sort)?.isVisible = true
}
return super.onPrepareOptionsMenu(menu)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.header_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.db_menu_search -> {
Toast.makeText(applicationContext, "Search Clicked", Toast.LENGTH_SHORT)
.show()
}
R.id.db_menu_sort -> {
sortDialog()
}
R.id.header_menu_verbs -> {
getToFragmentB("Verbs",1)
}
}
return false
}
हेडर_मेनू.एक्सएमएल
//just informative
<item id=db_menu_search icon=ic_search />
<item id=db_menu_sort icon=ic_sort />
<item id=db_menu_verbs />
<item id=db_menu_nouns /> ....
मैंने onPrepareOptionsMenu
इसे काम करने की उम्मीद में जोड़ा ... यह ठीक से काम नहीं करता है
क्या गलत कर रहा हूं?
गतिविधि में HomeFragment सेट होने पर मैं टूलबार से उन दो आइकन को कैसे छिपा सकता हूं और दूसरा टुकड़ा प्रदर्शित होने के बाद उन्हें दिखा सकता हूं?
1 उत्तर
मैं यहां मुख्य चरणों का वर्णन करता हूं, अंत में कार्य समाधान के लिए लिंक
मेन्यू.एक्सएमएल के सभी आइटम्स का पैरामीटर
android:visible="false"
हैsetHasOptionsMenu(true)
प्रत्येक खंड केonCreate()
में होना चाहिए, जहां टूलबार में आइकन प्रस्तुत करना आवश्यक है। इसके बिना गतिविधि कार्य करती हैonCreateOptionsMenu / onPrepareOptionsMenu
को कभी भी फ्रैगमेंट बदलने पर कॉल नहीं किया जाएगा।override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setHasOptionsMenu(true) }
supportFragmentManager के माध्यम से onPrepareOptionsMenu में आइकन दिखाना/छिपाना संभालना। यह पता लगाने का एकमात्र तरीका है कि वर्तमान में कौन सा टुकड़ा प्रदर्शित हो रहा है।
override fun onPrepareOptionsMenu(menu: Menu?): Boolean { supportFragmentManager.fragments.forEach { when { it.tag == FragmentTag.Fragment1.tag && it.isVisible -> { menu?.findItem(R.id.action_fragment1)?.isVisible = true menu?.findItem(R.id.action_fragment2)?.isVisible = true } it.tag == FragmentTag.Fragment2.tag && it.isVisible -> menu?.findItem(R.id.action_fragment2)?.isVisible = true it.tag == FragmentTag.Fragment3.tag && it.isVisible -> menu?.findItem(R.id.action_fragment3)?.isVisible = true } } return super.onPrepareOptionsMenu(menu)
}
कोड टू वर्किंग सॉल्यूशन: https://github.com/ Yellow-cap/android -हैंडल-टूलबार-आइकन
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।
onPrepare...
खंड कोड को सफेद करें? या मुख्य गतिविधि वर्ग के भीतर। मुझे इसे काम करने के लिए कोड का उपयोग करने के लिए कहां माना जाना चाहिए?