我有所有的活动在肖像模式,除了一个我用来播放的视频,始终是景观。我发现在Android8.1上,每次我打开视频活动并关闭它时,之前的活动都会进入风景,即使它在清单上被设置为“肖像”。
这只是当一个活动从它的景观中返回时才发生。
有谁在经历这种事吗?
谢谢。
编辑
我在Google:https://issuetracker.google.com/issues/69168442上报告了这个bug
编辑2
它似乎固定在Android 9上。
发布于 2018-03-15 19:34:53
只是在我自己的应用程序中遇到了这个问题。
适用于我的解决方案如下:
onCreate(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
onPause(){
if (android.os.Build.VERSION.SDK_INT >= 27) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
}
onResume(){
if (android.os.Build.VERSION.SDK_INT >= 27) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
}上面的代码应该进入处于景观模式的活动(即第二个活动,以及您按下后退按钮的活动)。
我要指出的是,这个解决方案不是我自己的,我是从以下链接的#20帖子中摘取的(在“任择议定书”中也有说明):
https://issuetracker.google.com/issues/69168442
我只是在想,如果人们不需要搜索其他页面,就可以更容易地访问它。
发布于 2018-08-14 11:29:08
这个解决了问题。
重写onBackPressed()方法的景观活动,并设置方向肖像。
@Override
public void onBackPressed() {
super.onBackPressed();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}发布于 2018-06-21 12:52:01
如果你在你的宣言中有像DialogTheme一样的theme=Theme.AppCompat.Light.Dialog,从宣言中移除对话活动的集合方向标签,它将从先前的活动中取下方向,并将set导向标签放置到回放活动中。
对于下面的版本,请将其放在oncreate上
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}并为应用程序Theme.AppCompat.Light.DarkActionBar设置主题,不需要将主题添加到活动中
https://stackoverflow.com/questions/47228194
复制相似问题