2017-04-24 26 views
0

我有一個activity.Inside我加了NavigationDrawer的。禁止刷卡打開NavigationDrawer但能夠改變活動

我想禁用滑動左右打開我的NavigationDrawer。我只能點擊按鈕才能打開它。

但是,如果我左右滑動,我想回到上一頁。

我可以禁用菜單的滑動,但也會禁用滑動返回上一頁。

我該怎麼辦?

這裏是我的代碼:

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

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)  

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

回答

0

嘗試增加ID到抽屜佈局,然後使用它像

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

它只會禁用抽屜刷卡而不是其他東西。希望這能解決你的問題。

+0

它殺死我的應用程序。你的意思,我應該取代我評論你給了我一個行? –

+0

你能分享你的錯誤日誌嗎? –

+0

我說,這是在這條線:在com.example.dasilvadd.students.ModifierBranche.onCreate(ModifierBranche.java:64),這是ü給我行了.. –