2016-04-13 7 views
0

Ich versuche, einen Menüpunkt zu aktivieren oder deaktivieren, und ich benutze das folgende beheben:Warum onPrepareOptionsMenu nicht Methode findItem auf Android

@Override 
public boolean onPrepareOptionsMenu(Menu menu) 
{ 

    MenuItem item = menu.findItem(R.id.menu_stats_undo); 

    if (PlayerListSelect==1) { 
     item.setEnabled(true); 
     item.getIcon().setAlpha(255); 
    } else { 
     // disabled 
     item.setEnabled(false); 
     item.getIcon().setAlpha(130); 
    } 
    return true; 
} 

Und

@Override 
public boolean onCreateOptionsMenu(android.view.Menu menu) { 
    getMenuInflater().inflate(R.menu.stats_menu, menu); 
    return true; 
} 

und der XML-

<?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/menu_stats_undo" 
    app:showAsAction="always" 
    android:title="UNDO"/> 
</menu> 

aber ich bekomme eine rote Farbe findItem, kann Methode warum nicht auflösen?

+0

tun Sie diesen Artikel haben "menu_stats_undo" in der XML-Datei? –

+0

ja es ist dort –

+0

posten Sie Ihre menu.xml-Datei und auch den Code, wo Sie es in Ihrer Aktivität/Fragment – Cbr

Antwort

0

versuchen diese

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.YOUR_MENU_FILE_NAME, menu); 
    MenuItem item = menu.findItem(R.id.menu_stats_undo); 

    if (PlayerListSelect==1) { 
     item.setEnabled(true); 
     item.getIcon().setAlpha(255); 
    } else { 
     // disabled 
     item.setEnabled(false); 
     item.getIcon().setAlpha(130); 
    } 
    return true; 
}