我知道有很多这样的问题已经被问过,但我似乎有一个特定的情况,这些情况在任何重复的问题中都没有涉及。
所以我首先告诉你我的情况。我有一个Activity,它包含一个包含另一个片段的片段(WebViewFragment)。所以我有一个嵌套片段。 WebView是VideoEnabledWebView。我正在使用这个,因为我在WebView内部的html5中有视频,我希望能够在全屏显示。问题是:当您有全屏视频,然后更改设备的方向时,活动将重新启动,因此WebView会重新加载,导致视频关闭。然后我必须从头开始重新启动视频以在新方向播放它。我希望能够在不中断视频的情况下更改设备的方向。因此,视频会保持全屏状态并继续播放。
根据Android文档,有两种方法可以处理方向更改:
这是关于堆栈溢出的这个问题最流行的解决方案。其中我将android:configChanges =“keyboardHidden | orientation | screenSize”插入清单中的活动中。这有效,但我无法使用它,因为它可以防止整个Activity重新启动。因此,如果我处于纵向模式,我的横向特定布局xml文件不会被加载。也许有办法重新加载布局文件?但这一切听起来都很糟糕,而且我不确定我需要手动处理哪些其他东西,这通常是在配置更改期间由Android操作系统自动完成的。
这对我来说是不可能的,因为你必须使用setRetainInstance(true)而你不能用子片段来做这件事。但是,如果我在父片段上调用setRetainInstance(true),是否有人知道这是否有效?我正在测试这个,但它花了我几个小时来实现(因为我对android很新)。在我浪费时间尝试可能不好的解决方案之前,任何人都可以验证这是否有效?与此同时,我将继续努力,并在完成后告诉您它是否有效。
谢谢!
答案 0 :(得分:-1)
添加" screenSize" AndroidManifest.xml文件中的属性:
<body ng-app="app" class="ng-scope">
<div class="container ng-scope" ng-controller="AppCtrl">
<button ng-click="trigger_state('skills')">Skills</button>
<button ng-click="trigger_state('roles')">Roles</button>
<button ng-click="trigger_state('quals')">Quals</button>
<div class="row" ng-show="states.skills" style="display: none;">
Skills State Active
</div>
<div class="row" ng-show="states.roles" style="display: none;">
Roles State Active
</div>
<div class="row" ng-show="states.quals" style="display: none;">
Quals State Active
</div>
</div>
</body>
希望它能解决您的问题。