如何先关闭抽屉,然后调用onBackPressed?
问题描述:
我有一个抽屉布局的活动。如何先关闭抽屉,然后调用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。
我该怎么做?请帮忙。谢谢。
答
这将是你的代码:
@Override
public void onBackPressed() {
if(mDrawerLayout.isDrawerOpen(GravityCompat.END)) {
mDrawerLayout.closeDrawer(GravityCompat.END)
} else {
super.onBackPressed();
}
}
+0
这只关闭抽屉onBackPressed剂量关闭抽屉后不会被调用。 – Sid
+0
第一次按下它将关闭抽屉。那么第二次的应用程序就会返回。 –
发表您的错误的logcat –
我没有得到任何错误@ RahulKhurana – Sid