2

我有一個導航抽屜的活動,它的工作原理應該如此。唯一的問題是漢堡包菜單在第一個片段替換後不動畫。片段更換後抽屜切換不動畫

public class Main extends AppCompatActivity { 

// lots of attributes 

@Override 
protected void onCreate(Bundle in) { 
    super.onCreate(in); 
    setContentView(R.layout.activity_main); 
    actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setDisplayShowCustomEnabled(true); 
    setupDrawer(); 
} 

public void onEventMainThread(LoadedLEsEvent event) { 
    setupDrawer(); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (drawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

void setupDrawer() { 
    drawerToggle = new ActionBarDrawerToggle(this, navDrawer, R.string.drawer_open, R.string.drawer_closed) { 

     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      invalidateOptionsMenu(); 
     } 

     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      invalidateOptionsMenu(); 
     } 
    }; 
    drawerToggle.setDrawerIndicatorEnabled(true); 
    navDrawer.setDrawerListener(drawerToggle); 
    menuListAdapter = new MenuListAdapter(this, R.layout.drawer_item, someList); 
    menuListView.setAdapter(menuListAdapter); 
    menuListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      //Replaces the frame layout with a fragment 
     } 
    }); 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    drawerToggle.syncState(); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    // Pass any configuration change to the drawer toggles 
    drawerToggle.onConfigurationChanged(newConfig); 
} 

所以基本上它工作正常,直到我用一個片段替換FrameLayout。從這裏開始,抽屜仍然可以工作,但漢堡菜單根本不起作用。

回答

1

所以問題是我每次調用setupDrawer()都初始化了drawerToggle。將drawerToggle = new ActionBarDrawerToggle(...) {...};移動到onCreate()訣竅。