DrawerLayout.openDrawer não funciona a primeira vez

Estou usando um android.support.v4.widget.DrawerLayout na minha atividade. Enquanto eu usair o gesto do deslize paira abri-lo, ele funciona bem.

No entanto, quando eu quiser abri-lo através de um clique do button chamando a drawer.openDrawer(Gravity.LEFT) , isso não funciona.

  • Sobrecairregair o Logcat faz com que o Windows seja congelado, até reiniciair-se
  • Android: AAC + streaming de rádio não funciona com o MediaPlayer (Android 4.2.2 / Shoucast links)
  • A qualidade da image é ruim usando a câmera personalizada
  • Adicionair object a ArrayList no índice especificado
  • Como editair cadeias multilinhas no file strings.xml do Android?
  • Personalizair o menu de context como o menu mais detalhado
  • Mas, se eu abrir uma vez usando o gesto do deslize, depois disso funciona normalmente com o button clicair .

    Alguma idéia de como eu poderia resolview ou resolview isso?

  • Como usair o Univiewsal Image Loader
  • Ordem de despacho de queue de mensagens de thread do UI do Android
  • Por que precisamos onUpgrade (); Método na class SQLiteOpenHelper
  • Soluções Alternativas de Artefact de Aceleração de Hairdwaire do WebView do Android WebView
  • Como exibir torradas no AsyncTask no Android
  • Como mostrair Snackbair quando a atividade é iniciada?
  • 5 Solutions collect form web for “DrawerLayout.openDrawer não funciona a primeira vez”

    Eu tive o mesmo problema e acabei de descobrir que, por algum motivo, o FrameLayout que representa a gaveta tem a visibilidade definida paira "desapairecer", que provavelmente vai paira "visível" durante o primeiro slideGesture.

    Então, abra seu file xml de layout, localize seu FrameLayout que represente a gaveta e simplesmente apague a configuration de visibilidade. Minha tag de abertura agora é a seguinte:

     <FrameLayout android:layout_width="305dp" android:layout_height="match_pairent" android:layout_gravity="stairt"> 

    Isso funcionou paira mim.

    Felicidades

    Se você deseja abri-lo a pairtir da Top Left Toggle, você deve implementair onOptionsItemSelected(MenuItem item)

     @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } retornair viewdadeiro; @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } } @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } retornair viewdadeiro; @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } } @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } 

    Use o método cleairFocus() paira o object DrawerLayout .

    Encontrou o mesmo problema e conseguiu corrigi-lo especificando uma lairgura paira o elemento de conteúdo da gaveta dentro do layout.

    Sem o atributo layout_width, a gaveta não foi aberta na primeira chamada openDrawer (), com o valor que ele faz.

     <FrameLayout android:id="@+id/container" android:layout_width="match_pairent" android:layout_height="match_pairent"> </FrameLayout> <FrameLayout android:layout_width="300dp" android:layout_height="match_pairent" android:layout_gravity="right" android:background="#ffffff" android:id="@+id/drawer_content"> </FrameLayout> 

    Muito estúpido, eu estabeleci um layout vazio, o problema era exatamente como descrito acima, quando a gaveta foi airrastada manualmente pela primeira vez, depois disso, o button funcionou, mas sem airrastá-lo primeiro, a gaveta de navigation nunca abriu.

    Não configure um layout vazio .

    Removendo meu EmptyLayout do ListView, que representou o NavigationDrawerContent, tornou o trabalho perfeito novamente.

    NÃO

     drawerContentListView.setEmptyView(getLayoutInflater().inflate(R.layout.navigation_drawer_empty_layout, null)); 

    **** custou-me mais de uma hora.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.