यह एक मेनू के लिए मेरा लेआउट है।

आइटम पर ध्यान दें:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_best_stores"
        android:title="@string/showStores"
        android:onClick="showHideStores"
        android:enabled="true"
        android:checkable="true"
        app:showAsAction="never"
        />
</menu>

यह onAction फ़ंक्शन है।

public void showHideStores(MenuItem m) {
    m.setChecked(!m.isChecked());
    SHOWING_STORES = !SHOWING_STORES;
    showStoresProcess(SHOWING_STORES);
    refreshData();
    invalidateOptionsMenu();

}

जब भी मैं अपना प्रोग्राम चलाता हूं, तो फंक्शन काम करता है क्योंकि जो चीजें होनी चाहिए, होती हैं। सिवाय, उस भाग के लिए जहां आइटममेनु स्वयं बदल जाता है ... यह सिर्फ कुछ भी नहीं करता है, चेकबॉक्स अनियंत्रित रहता है ... मैंने सेटटाइटल की भी कोशिश की, कुछ भी नहीं बदलता है।

इसलिए, लाइन 1 किसी भी परिवर्तन का उत्पादन नहीं कर रहा है।

क्या हो रहा है?

यह वह कोड है जहां मैं मेनू को बढ़ाता हूं

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_list_actions, menu);
        super.onCreateOptionsMenu(menu);
        this.menu = menu;
        refreshData();
        return true;
    }

ध्यान दें कि फ़ंक्शन कैसे काम करता है क्योंकि स्क्रीन बदल जाती है, लेकिन मेनू को "चेक आउट" या "अनियंत्रित" नहीं मिलता है।

enter image description here

enter image description here

0
OHHH 23 नवम्बर 2015, 06:56

2 जवाब

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

समस्या को इस प्रकार समझाया गया है:

  • जब आप invalidateOptionsMenu() कॉल करते हैं, तो यह डिफ़ॉल्ट मेनू पर रीसेट हो जाएगा। तो कुछ नहीं हुआ।

हल: ओवरराइड करें एक > ()

@override
public bool onPrepareOptionsMenu(Menu menu)
{
    super.onPrepareOptionsMenu(menu);
    MenuItem m  = memenu.findItem(R.id.YourItemId);
    m.setChecked(!m.isChecked());//something like this

    return true;
}
0
T D Nguyen 23 नवम्बर 2015, 04:19

invalidateOptionsMenu() अपनी कॉल निकालें। onCreateOptionsMenu() कॉलिंग onCreateOptionsMenu() पर कॉल बैक करने जा रही है, जो एक नया मेनू बनाने जा रहा है, जो एक नया संयुक्त राष्ट्र-चेक MenuItem बनाएगा, मूल रूप से वही जिसे आप हल करना नहीं चाहते हैं। ।

0
Charles Durham 23 नवम्बर 2015, 04:16