我知道这个问题很糟糕,done thousands of times ;但说实话,我已经被困了 4 个小时试图解决这个问题。从 2009 年到今天,我访问了每个链接,所有链接都给出了相同的解决方案,但(**** 知道为什么)不适用于我的案例。
这是我的 list 中的 Activity :
<activity
android:name="com.example.activities.CamerasActivity"
android:configChanges="orientation|screenSize">
</activity>
我使用的是 SDK 4.0 或更高版本:
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />
这是我的课:
public class CamerasActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cameras_activity);
VideoView videoView = (VideoView)findViewById(R.id.action_cameras);
videoView.setVideoPath("/storage/sdcard/teste.mp4");
videoView.start();
}
//Still not working
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
{
Log.d("System.out", "Welcome to Landscape Mode");
}
else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
{
Log.d("System.out", "Welcome to portrait mode");
}
}
}
当我像这样运行我的应用程序时,我可以在纵向模式下看到,工作正常。如果我在 list 上使用 android:screenOrientation="landscape"
,我可以看到强制处于横向模式。这意味着我的布局很好,但为什么当我尝试旋转屏幕时我的 onConfigurationChanged
没有被调用?我错过了什么?
编辑:
AVD 配置:
启用自动旋转:
视频的样子: 我的 logcat 上没有输出。
最佳答案
当您物理旋转 Android 设备时,会调用 onConfigurationChanged
方法。因此,您需要旋转设备才能看到该方法被调用。
注意:当您更改区域设置等时,也会调用 onConfigurationChanged。请参阅 here了解更多信息。
另外,我将为 android:configChanges
指令设置以下值:
android:configChanges="orientation|screenSize|layoutDirection
此外,问题 61671可能与本文中描述的屏幕方向问题有关。 截至 2014 年 4 月,Google 尚未解决此缺陷/错误。
解决方法
如本 SO link 中所述,如果设备类型设置为通用 7 英寸平板电脑而不是 Nexus 7,屏幕方向可能会起作用。
关于android - 即使 list 配置发生更改,onConfigurationChanged 也不会被调用 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800556/