2017-04-24 2 views
0

Ich habe eine Aktivität.Inner habe ich ein NavigationDrawer hinzugefügt.Deaktivieren Sie Swipe, um NavigationDrawer zu öffnen, aber aktivieren Sie die Änderung der Aktivität

Ich möchte den Swipe von links nach rechts deaktivieren, um meine NavigationDrawer zu öffnen. Ich konnte es nur öffnen, wenn ich auf den Knopf klicke.

Ich möchte jedoch auf die vorherige Seite zurückgehen, wenn ich einen Swipe von links nach rechts mache.

Ich kann den Swipe für das Menü deaktivieren, aber es deaktiviert auch den Swipe, um zur vorherigen Seite zurückzukehren.

Wie kann ich es tun?

Hier ist mein 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 - ERROR

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)  

meine XML-Datei:

<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> 

Antwort

0

Versuchen Sie, Schublade Layout Hinzufügen ID und dann mit es mag

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

Es wird nur Swipe für Schublade nicht für andere Dinge deaktivieren. Hoffe das löst dein Problem.

+0

Es tötet meine App .. Sie meinten, ich sollte die Zeile ersetzen, die ich mit der, die Sie mir gaben kommentierte? –

+0

können Sie Ihr Fehlerprotokoll teilen. –

+0

Ich habe hinzugefügt, es ist in dieser Zeile: at com.example.dasilvadd.students.ModifierBranche.onCreate (ModifierBranche.java:64), die Linie ist, die Sie mir gegeben haben .. –

Verwandte Themen