Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在方向改变期间,如何保持在同一碎片上?_Android_Screen Orientation_Slidingmenu_Navigation Drawer - Fatal编程技术网

Android 在方向改变期间,如何保持在同一碎片上?

Android 在方向改变期间,如何保持在同一碎片上?,android,screen-orientation,slidingmenu,navigation-drawer,Android,Screen Orientation,Slidingmenu,Navigation Drawer,我一直在遵循教程的指导,在第一次启动时打开绘图的导航抽屉。那一部分效果很好。我现在遇到的问题是,当方向改变时,它会回到第一个片段,而不是停留在当前片段上。我已经尝试添加以下代码来帮助实现这一点,但没有帮助 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurat

我一直在遵循教程的指导,在第一次启动时打开绘图的导航抽屉。那一部分效果很好。我现在遇到的问题是,当方向改变时,它会回到第一个片段,而不是停留在当前片段上。我已经尝试添加以下代码来帮助实现这一点,但没有帮助

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
    getSupportActionBar().setTitle(mTitle);
}
这对谷歌的教程非常有用,但我无法在第一次运行时打开抽屉,也无法在项目选择时关闭抽屉(这是另一个问题)

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


有谁能给我一些建议,在切换到景观时,如何阻止事物发生变化?我已经为此工作了几个星期了/

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

在配置更改(方向更改)后,您的
onCreate
将再次被调用,您现在需要担心的是显示方向更改前最后一个选定的片段,因此您可以做的是覆盖
onSaveInstanceState
以存储对选定片段的引用(例如索引值)在bundle中,然后在您的
onCreate
的bundle中获取该值,并使用
FragmentTransaction
显示适当的片段

我不确定这是不是最好的处理方法,但这是我的方式,因为我没有找到其他方法

至于关闭抽屉,您可以使用
drawer.isDrawerOpen
检查抽屉是否打开,然后使用
drawer.closeDrawer关闭抽屉,这对您不起作用?请确保在
单击Listener
中添加这些内容


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

您不能像使用方向代码那样管理片段。您需要自己管理片段堆栈,并根据上次加载的片段进行相应的方向更改并在方向更改时加载。我想这是我感到困惑的地方。我还没有弄清楚我需要用什么方法来处理他们才能让这个工作正常进行。不过我会继续努力。以上问题有什么解决办法吗?我也面临着同样的问题。