如何在方向改变期间保持相同的片段?

时间:2013-12-11 04:05:37

标签: android screen-orientation slidingmenu navigation-drawer

我一直在关注this教程,以便在第一次启动时打开绘图的导航抽屉。那部分非常有效。我现在面临的问题是,在方向改变时,它会回到第一个片段而不是保持当前片段。我已经尝试添加以下代码来帮助解决这个问题,但它没有帮助。

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

这适用于Google提供的教程,但我无法在第一次运行时打开抽屉,并且能够关闭项目选择上的抽屉(这是一个不同的问题)。

我还尝试在没有帮助的情况下将adroid:configChanges="orientation|screenSize"添加到清单中。

有人可以给我一些关于如何在切换到横向时阻止变化的建议吗?我已经在这个问题上工作了几个星期了。 :/

1 个答案:

答案 0 :(得分:0)

在方向更改后,创建的片段将重新附加到活动,因此请检查 savedInstanceState 是否为空(首次运行),然后创建片段并附加它们。

在配置更改(方向更改)后,您的 onCreate 将再次被调用,您现在需要担心的是在方向更改之前显示最后选择的片段,那么你是什么可以做的是覆盖 onSaveInstanceState 来存储对所选片段(例如索引值)的引用,然后在 onCreate中获取该值的捆绑并使用 FragmentTransaction 来显示相应的片段。

不确定这是否是处理它的最佳方式,但这是我采用的方式,因为我没有找到任何其他方法。

关于抽屉的关闭,您可以使用 drawer.isDrawerOpen 检查抽屉是否已打开,并使用 drawer.closeDrawer 关闭抽屉,&#39 ;不适合你?请务必在 Click Listener

中添加这些内容

希望对你有所帮助,祝你好运。