2016-04-04 8 views
1

In meiner app habe ich fast 8 Menüs und ich habe zwei Arten von Benutzern admin und ClientWie können Sie einige Menüs in der Aktionsleiste ausblenden?

für Admin muss ich alle 8 manus zeigen und für Benutzer muss ich für Benutzer 2 Menüs anzuzeigen

für das ich habe dies angesichts

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.m_mymenu, menu); 
    return true;  
} 

nach meinem Code wird bei auf Lebenslauf sein, die ich unter einem

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

    SharedPreferences s = getSharedPreferences(my_New_SP, 0); 
    HashMap<String, String> map= (HashMap<String, String>) s.getAll(); 

    int id = item.getItemId(); 

if (map.get("usage").equals("Admin")) 
{ 
    if (id == R.id.abc) { 
     Intent mypIntent = new Intent(this, Myp.class); 
     startActivity(mypIntent); 
     return true; 
    } 
    . 
    . 
    . 
    . 
    else if (id == R.id.web1) { 
     Intent webIntent = new Intent(this, Web.class); 
     startActivity(webIntent); 
     return true; 
    } 
    else if (id == R.id.about1) { 
     Intent aboutIntent = new Intent(this, About.class); 
     startActivity(aboutIntent); 
     return true; 
    } 
} 

if (map.get("usage").equals("User")) 
{ 
    if (id == R.id.web1) { 
     Intent webIntent = new Intent(this, Web.class); 
     startActivity(webIntent); 
     return true; 
    } 
    else if (id == R.id.about1) { 
     Intent aboutIntent = new Intent(this, About.class); 
     startActivity(aboutIntent); 
     return true; 
    } 
} 
    return super.onOptionsItemSelected(item); 
} 

Also hier in Optionsmenü bin Hinzufügen Ich möchte nur zwei für Benutzer und 8 für Admin zeigen.

Aber wenn ich es als Benutzer I und in der Lage, alle Menüs zu sehen und nur zwei von ihnen arbeiten .. so hier möchte ich nur Arbeitsmenüs zeigen remaning sollte verstecken ..

kann mir dieser Art vorschlagen ..

Hier Menüs von android-Menüs sind nicht nur dynamische Menüs ...

Antwort

2

In onCreateOptionsMenu(), überprüfen Sie für den Zustand und zeigen oder verstecken Sie es wie folgt:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.layout.m_mymenu, menu); 


SharedPreferences s = getSharedPreferences(my_New_SP, 0); 
HashMap<String, String> map= (HashMap<String, String>) s.getAll(); 

if (map.get("usage").equals("Admin")) 
{ 
MenuItem item = menu.findItem(R.id.usermenu1); 
item.setVisible(false); 
//your all user menu's same like above 

} 


else if (map.get("usage").equals("User")) 
{ 
MenuItem item = menu.findItem(R.id.adminmenu1); 
item.setVisible(false); 
//your all admin menu's same like above 
} 

    return true; 
} 
+0

danke @Ranjhid Kumar Sir, hier bin ich, wenn ich dies in meinem Code verwende ich Fehler bei Artikel und "Menü" bekommen. Bitte überprüfen Sie meine aktualisierte Frage Wo sollte ich meinen Code ändern müssen –

+0

@ DonBenegative versuchen Sie den Code in onCreateOptionMenu() .. siehe meine bearbeitete Antwort .. –

+0

Sir bitte sehe meine Update-Frage Sir ... Wenn ich dir folgen Code I bekomme einen Fehler ... Hier verwende ich map.get ("usage"). equals ("User") von shared prefs .. at on resume –

0
private Menu menu1; 

jetzt in oncreate tun so etwas wie dieses

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater menuInflater = getMenuInflater(); 
     menuInflater.inflate(R.layout.menu, menu); 
     menu1 = menu.findItem(R.id.web1); 
     menu1.setVisible(false); 
     return true; 
    } 

jetzt können Sie verstecken/zeigen menu1, wo immer Sie wollen. Tun Sie dasselbe für die anderen Optionen