Android onConfigurationChanged即使在清单配置更改的情况下也没有被调用-为什么?

Android onConfigurationChanged即使在清单配置更改的情况下也没有被调用-为什么?,android,manifest,screen-rotation,onconfigurationchanged,Android,Manifest,Screen Rotation,Onconfigurationchanged,我知道这个问题很糟糕;但说真的,我已经被困了4个小时试图解决这个问题。从2009年到今天,我进入了每一个环节,所有环节都给出了相同的解决方案(****知道为什么)不适用于我的案例 这是我的清单中的活动: <activity android:name="com.example.activities.CamerasActivity" android:configChanges="orientation|screenSize"> </activity> 当我像这样运行我的

我知道这个问题很糟糕;但说真的,我已经被困了4个小时试图解决这个问题。从2009年到今天,我进入了每一个环节,所有环节都给出了相同的解决方案(****知道为什么)不适用于我的案例

这是我的清单中的活动:

<activity 
android:name="com.example.activities.CamerasActivity"
android:configChanges="orientation|screenSize">
</activity> 
当我像这样运行我的应用程序时,我可以在纵向模式下看到,运行良好。如果我在清单上使用android:screenOrientation=“横向”,我可以看到横向模式下的强制。这意味着我的布局很好,但为什么在我尝试旋转屏幕时没有调用我的
onConfigurationChanged
?我错过了什么

编辑:

AVD配置:

已启用自动旋转:

视频的方式是:
并且在我的logcat上没有输出。

当您实际旋转Android设备时,会调用
onConfigurationChanged
方法。因此,您需要旋转设备以查看调用的方法

注意:当您更改区域设置等时,也会调用OnConfiguration changed。有关更多信息,请参阅

另外,我将为
android:configChanges
指令提供以下值:

android:configChanges="orientation|screenSize|layoutDirection
此外,这个问题可能与本文中描述的屏幕方向问题有关。截至2014年4月,谷歌尚未解决此缺陷/漏洞

解决方法


如本SO中所述,如果设备类型设置为通用7,屏幕方向可能有效“tablet代替Nexus 7

物理旋转Android设备时,会调用
OnConfiguration Changed
方法。你实际转动过你的设备吗?没有,我想我可以在AVD上看到这个动作-没有发现任何参考告诉我旋转只适用于真正的设备;我想你可以将此作为答案发布。要在AVD上查看它,请按Ctrl+F11以更改/模拟屏幕方向。但我确实使用了Ctrl+F11,但仍然看不到布局旋转…忘了提到你需要先通过AVD的设置选项启用屏幕方向,然后按Ctrl+F11。我在AVD编辑上找不到设置选项,我正在快速查找它;请编辑您的答案并发布更多关于此启用的详细信息,好吗?因此,我可以接受AVD内已启用的答案?你是说在eclipse配置上的外部吗?不,我是说在AVD内部。发布你的AVD配置。奇怪的是,它不能用CTRL+F11旋转,并且屏幕旋转在AVD中启用!。。。布局方向不起作用;从哪里可以检索avd配置信息?我的意思是,有没有什么txt文件可以让一切正常?因为我在看ddms透视图,我找不到…不,只是发布一个屏幕转储,这样我就可以看到你为AVD设置了什么。通常,对于AVD,我会有以下选项:RAM:256,VM堆:64,内部存储:200,SD卡大小:50。然后选择硬件键盘显示选项。
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");
        }
    }
}
android:configChanges="orientation|screenSize|layoutDirection