我正在使用MonoDroid,但等效的Java答案仍然可以提供帮助。检测OnPause中的屏幕方向更改()
我正在使用纵向布局和横向布局,因此,如果可能的话,我想使用Android屏幕方向自动创建/删除活动。
我的应用程序,以便在使用TextToSpeech
我来控制它的活动的OnPause()
,当Home键被按下或来电正在发生的效果很好。不过,我不想停止TextToSpeech屏幕方向更改从用户。
是否有一个简单的方法来检测此更改,以便TextToSpeech
不会中断?
我的活动的OnStop()
代码:
protected override void OnPause()
{
// I need this for Home key, intercepting phone calls, etc.
// But how can I prevent this for a screen orientation change?
// Need to enable screen orientation to get my portrait/landscape views
if(Text2Speech.IsTextToSpeechInitialised && Text2Speech.TextToSpeech != null)
Text2Speech.TextToSpeech.Stop();
base.OnPause();
}
你有没有看使用Android的'表现?这指定您要自己处理方向更改。在你的Activity中覆盖'onConfigurationChanged'并做任何你可能需要做的事情(改变布局等)。 – Squonk 2012-01-08 08:51:08
我看到了,它可能是我必须去的方法。如果可能的话,我希望Android能够在销毁我的肖像活动/创建景观活动时为我处理所有这些问题,反之亦然。我只是想知道是否有一个简单的方法来检测OnPause期间的方向变化() – 2012-01-08 09:06:23
否,没有简单的方法知道。 “活动”生命周期受各种因素影响(例如来电)。在“活动”的“退出”阶段(暂停,停止销毁),没有系统机制来解释发生这种情况的原因。你得到的最好的是自己处理变化。传递给'onConfigurationChanged(...)'的'Configuration'对象至少可以帮助你识别这是一个方向改变,在这一点你只需要使用'setContentView(...)'以正确的布局。这很费劲但不是太糟糕。 – Squonk 2012-01-08 09:53:27