2016-04-06 7 views
0

Ich bin neu bei Android. Ich versuche, 2 Symbole in meiner Aktionsleiste hinzuzufügen. Also habe ich getSupportActionBar().setIcon() dazu verwendet. Hier ist der Code, den ich onCreate() verwendet habe.Action Bar Icons verschwinden, wenn die Schublade geöffnet wird

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    mNavigationDrawerFragment = (NavigationDrawerFragment) 

    getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
    mTitle = getTitle(); 

    // Set up the drawer. 
    mNavigationDrawerFragment 
     .setUp(R.id.navigation_drawer,(DrawerLayout) findViewById(R.id.drawer_layout)); 

    getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFA500"))); // change the color of header 

    mTitle = mDrawerTitle = getTitle(); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

    // enabling action bar app icon and behaving it as toggle button 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setHomeButtonEnabled(true); 
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu); 

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_menu, R.string.app_name,R.string.app_name){ 

     public void onDrawerClosed(View view) { 
      getSupportActionBar().setTitle(mTitle); 
      // calling onPrepareOptionsMenu() to show action bar icons 
      invalidateOptionsMenu(); 
     } 

     public void onDrawerOpened(View drawerView) { 
      getSupportActionBar().setTitle(mDrawerTitle); 
      // calling onPrepareOptionsMenu() to hide action bar icons 
      invalidateOptionsMenu();   } 
     }; 

     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     getSupportActionBar().setIcon(R.drawable.ic_deals); 
     getSupportActionBar().setIcon(R.drawable.ic_loc); 
    } 

Wenn ich Oen die Schubladen-Symbole aus der Aktionsleiste verschwinden. Bu, wenn ich es wieder öffne, erscheinen die Symbole wieder.

Wer hat eine Idee, was hier passiert?

Vielen Dank im Voraus. :)

+1

sollten Sie ein Menü verwenden –

+0

Wie @MalekHijazi sagte, finden Sie unter diesem Link für weitere Informationen über Menü Ressource. http://developer.android.com/guide/topics/ui/menus.html –

+0

Ja! versuchte es auch. Es funktioniert. Aber wenn ich expandiere, verschwindet das Icon der Navigationsleiste. Irgendeine Idee warum? –

Antwort

2

entfernen invalidateOptionsMenu() von onDrawerClosed() und onDrawerOpened() und sehen, ob die Symbole verschwinden, wenn die Schublade geöffnet wird.

Da Sie die onPrepareOptionsMenu() -Methode nicht veröffentlicht haben, denke ich, dass das das Problem ist. invalidateOptionsMenu() ruft onPrepareOptionsMenu() auf und ich vermute, dass der Code vorhanden ist, um die Symbole beim Öffnen der Schublade auszublenden.

P.S: Buchung als separate Antwort, da ich nicht kommentieren konnte.

+0

Danke für die Antwort. Es hat funktioniert. :) –

2

Sie können versuchen, dies zu folgen Link.

Überprüfen Sie dies und sagen Sie mir, ob es funktioniert oder nicht.

Oder Sie können etwas wie das tun. erstellen menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/next" 
      android:icon="@drawable/ic_next" 
      android:title="@string/next" /> 
    <item android:id="@+id/previous" 
     android:icon="@drawable/ic_previous" 
     android:title="@string/previous" /> 
    <item android:id="@+id/list" 
     android:icon="@drawable/ic_list" 
     android:title="@string/list" /> 
</menu> 

Und jetzt werden Sie ICON setzen auf Menü

Jetzt in CreateOptionMenu

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 

Und das Menü zugreifen können.

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.next: 
     Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.next) + " menu option", 
        Toast.LENGTH_SHORT).show(); 
     return true; 
    … 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
+0

Ja! versuchte es auch. Es funktioniert. Aber wenn ich expandiere, verschwindet das Icon der Navigationsleiste. Irgendeine Idee warum? –

+0

Haben Sie getSupportActionBar() .setIcon (R.drawable.ic_deals) und getSupportActionBar() entfernt. SetIcon (R.drawable.ic_loc); –

+0

Ja, habe ich getan. Wenn die Symbole der Navigationsleiste ausgeblendet werden, verschwinden sie und wenn Sie das Symbol der Navigationsleiste schließen, erscheint das Symbol. Das geht weiter. Was soll ich machen? –