2

I have an activity with a navigation drawer that works as it should. The only problem is that the hamburger menu doesn't animate after the first fragment replacement.

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);
}

So basically it works fine until I replace the FrameLayout with a fragment. From here, the drawer still works but the Hamburger menu doesn't animate at all.

Karim Kouznetsov
  • 513
  • 1
  • 3
  • 13

1 Answers1

1

So the problem was that I initialized drawerToggle each time I called setupDrawer(). Moving drawerToggle = new ActionBarDrawerToggle(...) {...}; to onCreate() did the trick.

Karim Kouznetsov
  • 513
  • 1
  • 3
  • 13