Java 如何根据实际方向使用不同的碎片?

Java 如何根据实际方向使用不同的碎片?,java,android,android-fragments,Java,Android,Android Fragments,我在网站上到处搜索,没有找到答案。到目前为止,当方向发生变化时,我设法保持了应用程序的重要状态,但现在我希望每个方向都有单独的片段: 如果(纵向模式)=>将片段纵向附加到活动 如果(横向模式)=>将片段横向连接到活动 我不想要两个单独的布局,而是两个不同的片段(这是因为我想添加一些在纵向模式下“不可能”实现的功能)。如何实现这一点?您可以检查正在附加片段的活动的onConfigurationChanged中的方向更改 所以,你需要做的是 @Override public void onConfi

我在网站上到处搜索,没有找到答案。到目前为止,当方向发生变化时,我设法保持了应用程序的重要状态,但现在我希望每个方向都有单独的片段:

如果(纵向模式)=>将片段纵向附加到活动

如果(横向模式)=>将片段横向连接到活动


我不想要两个单独的布局,而是两个不同的片段(这是因为我想添加一些在纵向模式下“不可能”实现的功能)。如何实现这一点?

您可以检查正在附加片段的活动的
onConfigurationChanged
中的方向更改

所以,你需要做的是

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //set the fragment for landscape mode
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
         //Set the fragment for portrait mode
    }
}
另外,不要忘记添加


android:configChanges=“orientation | screenSize
”在清单文件中的活动标记中,您正在处理配置更改。

我们建议在活动的onResume()方法中检查您的方向,如下面所示

@Override
    protected void onResume() {
        super.onResume();
        int mOrientation = this.getResources().getConfiguration().orientation;
        if (mOrientation == Configuration.ORIENTATION_PORTRAIT) {
            // code for portrait mode
            //Add your Portarait fragment
        } else {
            // code for landscape mode
            // Add your landscape fragment
        }
    }

它起作用了!但是现在我失去了我的“状态”(实际上只是一个数组),有没有简单的方法来保持我的状态?据我所知,当我改变方向时,会调用OnConfiguration Changed,在那里我会膨胀适当的片段,但是。。这里没有办法保持状态,或者是有吗?看看这个