0

J'ai créé une application qui a un tiroir de navigation, ça marche bien, mais le seul problème est que je vois deux barres d'outils. Un dans lequel il y a le bouton Actionbartoggle et l'autre qui est par défaut. Maintenant, le tutoriel que j'ai vu a utilisé une barre d'outils dans le contenu principal de la disposition des tiroirs et, évidemment, les contenus de navigation proviennent du menu. Maintenant le problème est que je pense que nous devons passer une référence de barre d'outils dans le constructeur d'Actionbardrawertoggle, et après que je l'ai passé correctement il fonctionne bien, mais je vois deux barres d'outils/barres d'action. Fondamentalement, ma question est comment puis-je obtenir le bouton bascule sur la barre d'action principale et ne pas créer une deuxième barre d'outils créée? J'ai essayé d'utiliserPourquoi deux barres d'outils s'affichent-elles lorsque je crée une application avec un tiroir de navigation?

<style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar"> 

Il me aide à cacher la actionbar supérieure mais je ne pense pas que ce soit la bonne façon de le faire. Je télécharger mon écran de sortie et le code:

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawerLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <!-- Page Content --> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:background="@color/colorPrimary" 
      android:minHeight="?attr/actionBarSize" 
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 
    </LinearLayout> 

    <!-- Navigation View --> 
    <android.support.design.widget.NavigationView 
     android:id="@+id/navigationView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 

     app:itemTextColor="#5DADE2" 

     app:menu="@menu/drawer_items"/> 

</android.support.v4.widget.DrawerLayout> 

MainActivity:

import android.content.DialogInterface; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.support.v7.app.AlertDialog; 
    import android.support.v7.app.AppCompatActivity; 
    import android.view.Menu; 
    import android.view.MenuInflater; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.widget.Button; 
    import android.support.annotation.NonNull; 
    import android.support.design.widget.NavigationView; 
    import android.support.v4.view.GravityCompat; 
    import android.support.v4.widget.DrawerLayout; 
    import android.support.v7.app.ActionBarDrawerToggle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.support.v7.widget.Toolbar; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.view.Window; 
    import android.widget.Toast;  
    import java.util.HashMap;  
    import android.content.DialogInterface; 
    import android.content.Intent; 
    import android.support.v7.app.AlertDialog; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button;  
    import java.util.HashMap; 

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{ 
    SessionManager session; 

    private Toolbar mToolbar; 
    private DrawerLayout mDrawerLayout; 
    ActionBarDrawerToggle drawerToggle; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_area); 

     setupToolbarMenu(); 
     setupNavigationDrawerMenu();  

    } 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
      case R.id.lg: 

       session.logoutUser(); 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } private void setupToolbarMenu() { 

     mToolbar = (Toolbar) findViewById(R.id.toolbar); 

     mToolbar.setTitle("Home Page"); 
    } 

    private void setupNavigationDrawerMenu() { 

     NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView); 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
     navigationView.setNavigationItemSelectedListener(this); 
     navigationView.setItemIconTintList(null); 

     drawerToggle = new ActionBarDrawerToggle(this, 
       mDrawerLayout,mToolbar, 
       R.string.drawer_open, 
       R.string.drawer_close); 

     mDrawerLayout.addDrawerListener(drawerToggle); 

     drawerToggle.syncState(); 

    } @Override // Called when Any Navigation Item is Clicked 
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { 

     closeDrawer(); 

     switch (menuItem.getItemId()) { 

      case R.id.home: 
       // Put your Item specific Code here 
       break; 

      case R.id.invoice: 
       Intent intent = new Intent(this,details.class); 
       startActivity(intent); 
       // Put your item specific Code here 
       break; 
     } 

     return true; 
    } 

    // Close the Drawer 
    private void closeDrawer() { 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
    } 

    // Open the Drawer 
    private void showDrawer() { 
     mDrawerLayout.openDrawer(GravityCompat.START); 
    } 


    @Override 
    public void onBackPressed() { 
     if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) 
      closeDrawer(); 
     else{ 
     new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit") 
       .setMessage("Are you sure?") 
       .setPositiveButton("yes", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         Intent intent = new Intent(Intent.ACTION_MAIN); 
         intent.addCategory(Intent.CATEGORY_HOME); 
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(intent); 
         finish(); 
        } 
       }).setNegativeButton("no", null).show();} 
    }  
} 

mon fichier styles.xml:

<resources> 
     <!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style>  
    </resources> 

Je sais que cela pourrait ne pas être d'une certaine utilité, mais voici mon fichier manifeste aussi:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> 

    <uses-permission android:name="android.permission.INTERNET"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <activity android:name=".details" /> 
     <activity android:name=".Login" 
      android:label="Login"/> 

     <activity android:name=".MainActivity" /> 
     <activity android:name=".recycler" /> 
     <activity android:name=".RegisterActivity" /> 
     <activity android:name=".SplashScreen"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity>   
    </application>  
</manifest> 

Et voici la sortie que je reçois: enter image description here

+0

Veuillez vérifier les liens suivants: https://stackoverflow.com/questions/24307919/action-bar-drawer-toggle-custom-icon https://stackoverflow.com/questions/29558303/change-icon-of-navigation-drawer –

Répondre

0

Essayez de suivre cet exemple: https://developer.android.com/training/appbar/setting-up.html

Vous y trouverez ceci:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(myToolbar); 
    } 

la chose que vous manque: setSupportActionBar(myToolbar);

+0

ok laisse moi essayer ça. donne moi quelques minutes. – Robin10

+0

ok donc en ajoutant android: theme = "@ style/Theme.AppCompat.Light.NoActionBar" et setSupportActionBar (mToolbar); joué un rôle. Maintenant, je suis capable de voir mon tiroir dans la barre d'action principale où le nom de l'application a été écrit. Thx :) j'accepte votre réponse. Juste une chose de plus, maintenant je vois le menu de débordement de couleur foncée quand je clique dessus, comment puis-je lui donner la couleur blanche tout en maintenant le tiroir dans cette barre d'action principale? – Robin10

+0

Je n'ai pas dit que vous devriez utiliser android: theme = "@ style/Theme.AppCompat.Light.NoActionBar" ... utilisez celui que vous aviez avant: Theme.AppCompat.Light.DarkActionBar –