2017-01-18 2 views
0

Je fais la navigation tiroir, j'ai ajouté tous les fichiers et les bibliothèques ajoutées pour le même .. j'ai copié ce tiroir de navigation de l'exemple .. et il fonctionnait bien..mais quand j'ai essayé cela dans mon projet ..son ne pas apparaître. Mais sa montrant la FragmentOne qui devrait être ouvert lorsque le premier clic de l'élément (. Cela signifie position 0)Navigation Drawer ne fonctionne pas dans Android?

ici est mon actvitity où je veux montrer le tiroir de navigation

PMCompaniesActivity:

public class PMCompaniesActivity extends AppCompatActivity 
      implements NavigationView.OnNavigationItemSelectedListener { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_pmcompanies); 
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 



      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
      drawer.setDrawerListener(toggle); 
      toggle.syncState(); 

      NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
      navigationView.setNavigationItemSelectedListener(this); 

      //add this line to display menu1 when the activity is loaded 
      displaySelectedScreen(0); 
     } 


     @Override 
     public void onBackPressed() { 
      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      if (drawer.isDrawerOpen(GravityCompat.START)) { 
       drawer.closeDrawer(GravityCompat.START); 
      } else { 
       super.onBackPressed(); 
      } 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.menu_main 
        , menu); 
      return true; 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.action_settings: 
        // User chose the "Settings" item, show the app settings UI... 


       // case R.id.action_cart: 


        //Intent ibs = new Intent(MainActivity.this,AddToCart.class); 
        //ibs.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        // startActivity(ibs); 
        // finish(); 
        break; 
       // User chose the "Favorite" action, mark the current item 
       // as a favorite... 


       default: 
        // If we got here, the user's action was not recognized. 
        // Invoke the superclass to handle it. 
        return super.onOptionsItemSelected(item); 

      } 
      return true; 
     } 
     @SuppressWarnings("StatementWithEmptyBody") 
     @Override 
     public boolean onNavigationItemSelected(MenuItem item) { 
      // Handle navigation view item clicks here. 
      int id = item.getItemId(); 

      if (id == R.id.Home) { 

       displaySelectedScreen(0); 
      } 
      else if (id == R.id.pgnsrch) 
      { 
       displaySelectedScreen(1); 
      } 
      else if (id == R.id.Fanciers1) 
      { 
       displaySelectedScreen(2); 
      } else if (id == R.id.company1) 

      { 
       displaySelectedScreen(3); 
      } 
      else if (id == R.id.Article1) 
      { 
       displaySelectedScreen(4); 
      } else if (id == R.id.Settings1) 
      { 
       displaySelectedScreen(5); 
      } 
      return true; 
     } 

    private void displaySelectedScreen(int position) 
    { 
     try { 

      Fragment fragment = null; 

      if (position == 0) 
      { 
       fragment = new FragmentOne(); 
      } 
      else if (position == 1) 
      { 

      } 
      else if (position == 2) 
      { 

      } else if (position == 3) { 

      } else if (position == 4) { 

      } else if (position == 5) { 

      } 

      //replacing the fragment 
      if (fragment != null) { 
       FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
       ft.replace(R.id.content_frame, fragment); 
       ft.commit(); 
      } 

      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      drawer.closeDrawer(GravityCompat.START); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 

voici activity_pmcompanies.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 
    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 

     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 



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

voici mon app_bar_main:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.pigeonmarket.PMSettingsActivity" > 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <include 
     layout="@layout/content_main2" 
     /> 
</android.support.design.widget.CoordinatorLayout> 

et voici contain_main2.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<FrameLayout 
    android:layout_marginTop="?actionBarSize" 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</FrameLayout> 
</RelativeLayout> 

Son pas me montrer une erreur sur logcat ..

+0

Vous avez deux 'DrawerLayout', tous les deux avec le même ID, l'un imbriqué dans l'autre. Débarrassez-vous du 'DrawerLayout' dans' app_bar_main'. Je voudrais également souligner que vous n'avez pas de 'ViewGroup' avec l'ID' content_frame' dans l'une des mises en page affichées, donc je ne suis pas tout à fait sûr de la façon dont votre 'FragmentTransaction' fonctionne. –

+0

désolé je ne vous obtiens pas ... dans la barre de l'application qui id de parler abt? Je vais poster d'autres fichiers où vous pouvez voir le contenu _frame –

+0

Débarrassez-vous de la < ', et son correspondant <' dans la disposition 'app_bar_main'. Vous n'avez besoin que d'une configuration 'DrawerLayout', et vous l'avez dans' activity_pmcompanies'. –

Répondre