3

因此,我有一个名为 Fragment 活动的扩展,SlidingFragmentActivity我将其用作我想在其上显示 DrawerLayout 的活动的基础。一切正常,直到您按下返回按钮并尝试使用主页按钮打开抽屉。什么都没发生。不过,从挡板滑动仍然有效。我也试过DrawerLayout.openDrawer(Gravity.LEFT);无济于事。

开始活动Intent.FLAG_ACTIVITY_REORDER_TO_FRONT也是如此。

所有代码都是从这个例子中复制的,所以我不明白为什么它不应该工作?

这是完整的SlidingFragmentActivity

public class SlidingFragmentActivity extends FragmentActivity {

    public static DrawerLayout mDrawerLayout;
    public static ActionBarDrawerToggle mDrawerToggle;

    // Fragment manager
    public FragmentManager fragmentManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sliding_menu);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        mDrawerToggle = new ActionBarDrawerToggle(
                this,
                mDrawerLayout,
                R.drawable.ic_drawer,
                R.string.drawer_open,
                R.string.drawer_close 
            );

        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

        fragmentManager = getSupportFragmentManager();
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pass the event to ActionBarDrawerToggle, if it returns
        // true, then it has handled the app icon touch event
        if (mDrawerToggle.onOptionsItemSelected(item)) {
          return true;
        }
        // Handle your other action bar items...
        return true;
    }

    public static void openDrawer() {
        mDrawerLayout.openDrawer(Gravity.LEFT);
    }
}

我绝不是活动生命周期方面的专家,但我猜这与 instanceState 有关?

其他人遇到这个问题/知道如何解决它?

4

0 回答 0