Я переключаю состояние DrawerLayout с кнопки onClick и отключая его прокрутку. Это работает нормально, но когда активность меняет ориентацию, ящик не сохраняет свое состояние; если он был открыт, он будет закрыт. Это даже случается, добавляя android:configChanges="keyboardHidden|orientation"
.DrawerLayout теряет состояние при изменении ориентации
код в моей деятельности:
private DrawerLayout drawer;
private int drawerLayoutGravity = Gravity.RIGHT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
disableDrawer();
View btnOpenDrawer = findViewById(R.id.btn_open_drawer);
btnOpenDrawer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleDrawerState();
}
});
}
private void toggleDrawerState() {
if (drawer.isDrawerOpen(drawerLayoutGravity)) {
drawer.closeDrawer(drawerLayoutGravity);
} else {
drawer.openDrawer(drawerLayoutGravity);
}
}
/**
* doesn't let the user swipe to open the drawer
*/
private void disableDrawer() {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
Возможное решение состоит в том, что я вновь открыть DrawerLayout на данный вид деятельности onConfigurationChanged
, но мне нужно избегаем отверстие повторно DrawerLayout, когда изменения конфигурации.
Хотя то, что вы говорите, имеет смысл, в данном случае это не должно быть проблемой, так как я использую ': configChanges =«keyboardHidden | ориентации»', поэтому OnCreate не вызывается на ориентации изменение. Благодаря! – RominaV
Он по-прежнему вызывает событие макета на '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' и ' Я немного поправлю свой ответ. –
О, да, извините. Моя логика немного ушла. Дайте минуту. Я исправлю ответ. –