Android onConfigurationChanged即使在清单配置更改的情况下也没有被调用-为什么?
我知道这个问题很糟糕;但说真的,我已经被困了4个小时试图解决这个问题。从2009年到今天,我进入了每一个环节,所有环节都给出了相同的解决方案(****知道为什么)不适用于我的案例 这是我的清单中的活动: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> 当我像这样运行我的
<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