android - fragment 更换后抽屉切换不动画

标签 android animation android-fragments navigation-drawer hamburger-menu

我有一个带有抽屉导航的 Activity ,它可以正常工作。唯一的问题是汉堡包菜单在第一次 fragment 替换后没有动画。

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

所以基本上它工作正常,直到我用 fragment 替换 FrameLayout。从这里开始,抽屉仍然可以使用,但汉堡包菜单根本没有动画。

最佳答案

所以问题是我每次调用 setupDrawer() 时都初始化了 drawerToggle。将 drawerToggle = new ActionBarDrawerToggle(...) {...}; 移动到 onCreate() 就成功了。

关于android - fragment 更换后抽屉切换不动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34609552/

相关文章:

android - 启动模拟器时如何修复 GRPC 错误 “WARNING: EmulatorService.cpp:448: Cannot find certfile”?

android - 如何在 Android 应用程序的 Activity 之间传递数据?

java - 用动画将layout_weight从0.3扩大到0.8

android - 单击按钮打开新 fragment (选项卡)

android - 错误 : Program type already present: androidx. versionedparcelable.ParcelImpl

java - 谷歌地图 : dynamic canvas drawing in mapview

javascript - 使用 TweenMax 以随机顺序交错动画

javascript - 动画 SVG 路径元素

java - Android:在父 fragment 和子 fragment 之间传递更新数据

android - 当关闭对话框 fragment 时,无法在 onSaveInstanceState 之后执行此操作