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,在那里我会膨胀适当的片段,但是。。这里没有办法保持状态,或者是有吗?看看这个