2017-04-24 3 views
0

J'ai une activité.À l'intérieur j'ai ajouté un NavigationDrawer.Désactiver le balayage pour ouvrir NavigationDrawer mais permettre de changer d'activité

Je voudrais désactiver le balayage gauche-droite pour ouvrir mon NavigationDrawer. Je ne pouvais l'ouvrir que si je cliquais sur le bouton.

Cependant, je veux revenir à la page précédente si je fais un balayage de gauche à droite.

Je suis capable de désactiver le balayage pour le menu, mais cela désactive également le balayage pour revenir à la page précédente.

Comment puis-je le faire?

Voici mon code:

mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout); 
    mToogle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close); 

    mDrawerLayout.addDrawerListener(mToogle); 
    mToogle.syncState(); 

    //this is how I lock my menu 
    mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 


    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    NavigationView navigation = (NavigationView)findViewById(R.id.menu_navigation); 

    navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem item) { 

      switch (item.getItemId()) 
      { 
       case R.id.mes_cours: 
        Intent cours = new Intent(ModifierBranche.this,MesCours.class); 
        startActivity(cours); 
        return true; 
       case R.id.mes_branches: 
        finish(); 
        startActivity(getIntent()); 
        return true; 
      } 
      return true; 

     } 
    }); 

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    mGestureDetector.onTouchEvent(event); 
    return super.onTouchEvent(event); 
} 


//the sub-class 
class MyGestureListener extends GestureDetector.SimpleOnGestureListener 
{ 

    @Override 
    public boolean onFling(MotionEvent event1, MotionEvent event2, 
          float velocityX, float velocityY) { 

     if(event2.getX() > event1.getX()){ 
      Intent intent = new Intent(
        ModifierBranche.this, MesBranches.class); 
      startActivity(intent); 
     } 
     return true; 
    } 
} 

@UPDATE - ERREUR

FATAL EXCEPTION: main 
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.dasilvadd.students/com.example.dasilvadd.students.ModifierBranche}: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
                       at android.app.ActivityThread.access$700(ActivityThread.java:159) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
                       at android.os.Handler.dispatchMessage(Handler.java:99) 
                       at android.os.Looper.loop(Looper.java:176) 
                       at android.app.ActivityThread.main(ActivityThread.java:5419) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:525) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                       at dalvik.system.NativeStart.main(Native Method) 
                      Caused by: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams 
                       at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:1421) 
                      at android.support.v4.widget.DrawerLayout.setDrawerLockMode(DrawerLayout.java:677) 
                       at com.example.dasilvadd.students.ModifierBranche.onCreate(ModifierBranche.java:64) 
                       at android.app.Activity.performCreate(Activity.java:5372) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)  
                       at android.app.ActivityThread.access$700(ActivityThread.java:159)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)  
                       at android.os.Handler.dispatchMessage(Handler.java:99)  
                       at android.os.Looper.loop(Looper.java:176)  
                       at android.app.ActivityThread.main(ActivityThread.java:5419)  
                       at java.lang.reflect.Method.invokeNative(Native Method)  
                       at java.lang.reflect.Method.invoke(Method.java:525)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)  
                       at dalvik.system.NativeStart.main(Native Method)  

mon fichier xml:

<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:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/drawerLayout" 
tools:context="com.example.dasilvadd.students.ModifierBranche"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent"> 
    <EditText 
     android:id="@+id/ETBranche" 
     android:layout_width="381dp" 
     android:layout_height="40dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <Button 
     android:id="@+id/bModifier" 
     android:layout_width="376dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="3dp" 
     android:onClick="ModifierBranche" 
     android:text="Modifier" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintRight_toRightOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

<android.support.design.widget.NavigationView 
    android:layout_width="wrap_content" 
    android:layout_height="140dp" 
    android:layout_gravity="start" 
    android:id="@+id/menu_navigation" 
    app:menu="@menu/navigation_menu"></android.support.design.widget.NavigationView> 

Répondre

0

Essayez d'ajouter id à la mise en page du tiroir, puis en utilisant comme

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, findViewById(R.id.right_drawer)); 

Le défilement du tiroir ne sera désactivé que pour d'autres éléments. J'espère que ceci résoudra votre problème.

+0

Il tue mon application .. Vous vouliez dire que je devrais remplacer la ligne j'ai commenté avec celui que vous m'avez donné? –

+0

pouvez-vous partager votre journal des erreurs. –

+0

J'ai ajouté, C'est dans cette ligne: à com.example.dasilvadd.students.ModifierBranche.onCreate (ModifierBranche.java:64) qui est la ligne que vous m'avez donné .. –