2015-01-23 4 views
1

У меня есть деятельность с DrawerLayout и ActionBarDrawerToggle для обработки бокового меню.Incoherent DrawerLayout поведение после вращения

Теперь мне понадобилась эта операция для вращения только на планшетах, но не на телефоне, поэтому я добавил android:configChanges="orientation|..." в свой манифест для этой активности и переопределил onConfigurationChanged. На телефонах ничего не сделано, а портрет вынужден, а на планшетах новая ориентация установлена ​​на SCREEN_ORIENTATION_SENSOR, чтобы позволить устройству решить и Я перезаряжаю макет с помощью setContentView().

Поскольку я сделал это, мое боковое меню не откроется после первого поворота. Я обнаружил, что onOptionsItemSelected еще называют:

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (item.getItemId() == android.R.id.home) { 
     if (mDrawerLayout.isDrawerVisible(GravityCompat.START)) { 
      mDrawerLayout.closeDrawer(GravityCompat.START); 
     } 
     else { 
      mDrawerLayout.openDrawer(GravityCompat.START); 
     } 
    } 
    return true; 
} 

но тест, который проверяет, если векселедатель видна всегда возвращает истину.

Любая идея о том, что может вызвать это? Я забыл заново создать или обновить что-то после вращения в onConfigurationChanged?

Примечание: Я также обнаружил, что если я не воссоздать макет (с setContentView()) ящик работает отлично (но тогда я, очевидно, потерять расположение пейзаж и получить портрет макета как-то масштабируется)

ответ

0

Так, я как-то нашел решение этой проблемы путем повторного подсоединения к DrawerLayoutActionBarDrawerToggle каждый раз, когда устройство вращается, после воссоздания макета:

setContentView(R.id.my_layout_id); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

в методе onConfigurationChanged.

Единственным недостатком является то, что ящик не будет сохранять свое состояние между двумя ориентациями (если он был открыт, он будет воссоздан и, таким образом, будет закрыт в новой ориентации).

Смежные вопросы