2017-08-05 40 views
0

我有一個抽屜佈局的活動。如何先關閉抽屜,然後調用onBackPressed?

我想檢查抽屜是否關閉,然後致電onBackPressed。如果抽屜打開,它應該先關閉然後onBackPressed應該被調用。

我試圖這樣做使用addDrawerListener

public class MainActivity extends AppCompatActivity { 

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

     setUpUI(); 

     listeners(
    } 

    public void setUpUI() { 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     //Initializing NavigationView 
     navigationView = (NavigationView) findViewById(R.id.navigation_view); 

     drawerLayout = (DrawerLayout) findViewById(R.id.drawer); 
    } 

    public void listeners() 
     drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() { 
      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset) { 

      } 

      @Override 
      public void onDrawerOpened(View drawerView) { 

      } 

      @Override 
      public void onDrawerClosed(View drawerView) { 
       onBackPressed(); 
      } 

      @Override 
      public void onDrawerStateChanged(int newState) { 

      } 
     }); 

    } 

    @Override 
    public void onBackPressed() 
     drawerLayout.closeDrawer(Gravity.END); 
     if (!mBackPressCancelled) { 
      if (getFragmentManager().getBackStackEntryCount() > 0) { 
       getFragmentManager().popBackStackImmediate(); 
      } else { 
       super.onBackPressed(); 
      } 
     } 
    } 

} 

有了這個抽屜靠攏半應用進行了封閉。我想關閉抽屜,打電話給BaackPressed。

我該怎麼做?請幫忙。謝謝。

+0

發表您的錯誤的logcat –

+0

我沒有得到任何錯誤@ RahulKhurana – Sid

回答

4

您可以檢查是否關閉抽屜或不

if(mDrawerLayout.isDrawerOpen(GravityCompat.END)) { //drawer is open }else{ super.onBackPressed(); }

+0

這隻關閉抽屜,關閉抽屜後不會調用BackBressed劑量。 – Sid

+0

您可以在抽屜打開時調用drawerLayout.closeDrawer(Gravity.END); –

+0

我做到了。但它只關閉抽屜onBackPressed – Sid

2

這將是你的代碼:

@Override 
public void onBackPressed() { 
    if(mDrawerLayout.isDrawerOpen(GravityCompat.END)) { 
     mDrawerLayout.closeDrawer(GravityCompat.END) 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

這隻關閉抽屜onBackPressed劑量關閉抽屜後不會被調用。 – Sid

+0

第一次按下它將關閉抽屜。那麼第二次的應用程序就會返回。 –