2013-02-27 18 views
15

मेरे पास एक्शन बार में एक ध्वज/बुकमार्क बटन है जिसे मैं टॉगल करना चाहता हूं या नहीं, जिस पर Fragment ViewPager के संदर्भ में है।एंड्रॉइड: ViewPager में प्रत्येक टुकड़े के आधार पर एक्शनबार आइटम अपडेट करें?

यदि उपयोगकर्ता ViewPager में एक टुकड़ा झंडाता है, तो इसे सक्षम करने के लिए सेट किया जाएगा। जब उपयोगकर्ता अगले के लिए स्वाइप करता है, तो मैं एक्शन बार बटन को अनलॉक करने के लिए अपडेट करना चाहता हूं। अब, मैं दो मेनू आइटम रखने और एक को छुपाकर बटन की स्थिति को बदलने में सक्षम हूं, क्लिक करते समय एक दिखाएं।

यहाँ कार्यवाही बार बटन चालू करने के लिए मेरे गतिविधि में कोड है:

public boolean onOptionsItemSelected(MenuItem item) { 
    int currentItem = mPager.getCurrentItem(); 
    switch (item.getItemId()) { 
    case R.id.menu_flag: 
     mFlagged = true; 
     supportInvalidateOptionsMenu(); 
     return true; 
    case R.id.menu_unflag: 
     mFlagged = false; 
     supportInvalidateOptionsMenu(); 
     return true; 
    } 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem item_flag = menu.findItem(R.id.menu_flag); 
    MenuItem item_unflag = menu.findItem(R.id.menu_unflag); 
    if (mFlagged) { 
     //If flagged 
     //Show flagged item 
     item_flag.setVisible(false).setEnabled(false); 
     item_unflag.setVisible(true).setEnabled(true); 
     item_flag.isVisible(); 
    } else { 
     //If not flagged 
     //Show unflagged icon 
     item_flag.setVisible(true).setEnabled(true); 
     item_unflag.setVisible(false).setEnabled(false); 
    } 

    return super.onPrepareOptionsMenu(menu); 
} 

समस्या मैं आ रही हैं कि मैं मेनू आइटम उपयोग नहीं कर सकते, & बटन की स्थिति बहाल बचाने है, यानी अगर यह खंड या FragmentPagerAdapter से ध्वजांकित या नहीं है।

मैं यह कैसे कर सकता हूं? मुझे एक्शन बार तक किस स्तर तक पहुंचा जाना चाहिए; गतिविधि, पेजर एडाप्टर या टुकड़े?

+1

क्या आप अपना प्रश्न संक्षेप में लाने का प्रयास कर सकते हैं? जहां तक ​​मैं इसे समझ गया, यह है: "मेरी गतिविधि कैसे जान सकती है कि वर्तमान में कौन सा टुकड़ा प्रदर्शित होता है, इसलिए मैं गतिविधि के अनुसार अपना एक्शनबार बदल सकता हूं", क्या यह सही है? – FWeigl

+0

@ एस्कोरबिन यह एक ViewPager –

उत्तर

22

अपने ViewPager पर ViewPager.OnPageChangeListener को पंजीकृत करना चाल चलाना चाहिए। फिर, पेज बदलते समय कॉलबैक प्राप्त करने के लिए पेज सेलेक्टेड (int पेजNum) पर ओवरराइड करें।

public void onPageSelected(int pageNum) { 
    supportInvalidateOptionsMenu();} 
+0

ग्रेट में प्रत्येक खंड द्वारा एक्शन बार पर आइटम को बदलने के तरीके के बारे में है! एक इलाज करता है! OnPageChangeListener एक पेजर एडाप्टर में था क्योंकि कुछ चालबाजी करना था, लेकिन यह समाधान समस्या का आधार हल करता है। धन्यवाद! –

+0

फिर आपकी गतिविधि के 'ऑनक्रेटऑप्शनमेनू (मेनू मेनू)' में 'viewPager.getCurrentItem() 'की जांच करें और उचित आइटम में आवश्यक मेनू को बढ़ाएं – Amt87

संबंधित मुद्दे