gpt4 book ai didi

android - getConfiguration().orientation 在 Android Fragment 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 14:00:39 28 4
gpt4 key购买 nike

我尝试使用 getResources().getConfiguration().orientationAndroid Fragment 中获取屏幕方向,但它返回的是相同的结果即使我在纵向和横向模式下旋转设备。我还在 onConfigurationChanged() 中使用(参见下面的代码)并且作为参数接收的配置报告了正确的屏幕方向,但是获取屏幕方向的通用方法总是报告 Activity 开始时的相同方向模式(横向或纵向) .

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

if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
Log.e(TAG, "NEW CONFIG: ORIENTATION_LANDSCAPE");
else
Log.e(TAG, "NEW CONFIG: ORIENTATION_PORTRAIT");

Configuration config = getResources().getConfiguration();
if(config.orientation == Configuration.ORIENTATION_PORTRAIT)
Log.e(TAG, "config: PORTRAIT");
else
Log.e(TAG, "config: LANDSCAPE");


LayoutInflater inflater = LayoutInflater.from(getActivity());
populateViewForOrientation(inflater, (ViewGroup)getView());
}

例如,如果 Activity 以横向模式启动,第一个日志输出将是:

1.a“新配置:ORIENTATION_LANDSCAPE”

1.b "配置:横向"

在我以纵向模式旋转设备后:

2.a“新配置:ORIENTATION_PORTRAIT”

2.b "配置:横向"

如您所见,即使设备具有不同的方向模式,配置也会报告相同的方向模式。

那么这里发生了什么?谢谢! :)

最佳答案

有时候,简单的解决方案不是与系统抗争,而是接受事实。只需在配置更改时更新配置即可。

试试这个:

private Configuration configuration;

private int getOrientation(){
return getConfiguration().orientation;
}

private Configuration getConfiguration(){
if (configuration == null) {
configuration = getResources().getConfiguration();
}
return configuration;
}

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

关于android - getConfiguration().orientation 在 Android Fragment 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887387/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com