如何在MapActivity中禁用方向更改



事情是这样的。在我的MapActivity启动后,我确实需要做一个漫长的过程,我有很多GeoPoints要添加到地图中。一切都很好,但我想显示ProgressDialog,而我的AsyncTask在后台完成这项工作,所以用户实际上知道在那几秒钟内会发生一些事情。同样,一切都很好,直到我在ProgressDialog活动时旋转手机。没问题,我想,我已经在另一个"活动"中处理过了,所以我只会将"活动"传递给AsyncTask,然后AsyncTask会在显示对话框之前调用以下行,这样我显示对话框的上下文就不会过早地被破坏,从而产生强制关闭:

activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

在我的对话框被取消后,我将调用这一行:

activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

从而用户可以再次旋转他的手机。我的问题来了:它在MapActivity中不起作用,它会在NOSENSOR行上产生NullPointerException。是否有其他方法可以暂时禁用MapActivities中的旋转?我可能会把整件事都改成"肖像",但如果我能做得更好的话,那不是我想做的。

欢呼

自己处理配置(如方向更改)。将此添加到您的清单中

android:configChanges="orientation|keyboardHidden"

活动标签中。

然后,您可以通过将以下方法应用于活动来处理这些配置更改

@Override
public void onConfigurationChanged(Configuration config){
    super.onConfigurationChanged(config);
}

最新更新