当屏幕旋转时,Facebook登录窗口关闭。

4

我已经将Facebook集成到我的应用程序中。

登录过程正常工作。当我点击Facebook图像时,它会打开Facebook登录窗口。

enter image description here

但是当我旋转模拟器时,它会关闭登录窗口。

enter image description here

有什么解决办法吗?


2
当屏幕旋转时,活动将被销毁并重新创建。 - Raghunandan
展示一些代码。听起来好像在旋转后没有重新创建。 - danijoo
是的,它正在重新创建活动,但如何防止它呢? - Shabbir Dhangot
你可以防止Activity重新创建,但是你应该处理配置更改。请查看文档,有一个相关的主题。http://developer.android.com/guide/topics/resources/runtime-changes.html - Raghunandan
3个回答

3
在您的Activity的清单文件中添加以下内容:
android:configChanges="keyboardHidden|screenSize|orientation"

1
注意:当您声明活动来处理配置更改时,您负责重置任何为其提供替代方案的元素。如果您声明活动来处理方向更改并且有应在横向和纵向之间更改的图像,则必须在onConfigurationChanged()期间重新为每个元素分配每个资源。 - Raghunandan
屏幕尺寸不存在。 - Shabbir Dhangot

2
我采取的方法是不允许操作系统在布局配置更改后重新启动您的活动。为了实现这一点,您需要在想要防止重新启动的活动中,在清单文件中添加以下行:
<activity
 android:configChanges="orientation|keyboard"
 ...
 >

在必要时,您可以在代码中处理配置更改,以便手动进行某些布局更改,例如从XML重新加载新视图。这是通过在您的Activity类中重写onConfigurationChanged()方法来完成的:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    //Handle config changes here, paying attention to
    //the newConfig.orientation value
    super.onConfigurationChanged(newConfig);
}

我需要在任何小的示例之间编写什么样的代码? - Shabbir Dhangot
@ShabbirDhangot http://developer.android.com/guide/topics/resources/runtime-changes.html - Raghunandan
@Raghunandan 我理解你所说的概念。但是Facebook登录窗口使用的是Webview。当它旋转时,Webview会被销毁。如何恢复这种情况? - Shabbir Dhangot

0

问题可能是由于屏幕方向配置更改引起的,您可以尝试以下解决方案:

  1. 正如一些答案建议的那样,您可以区分活动是第一次创建还是从savedInstanceState中恢复。这是通过覆盖onSaveInstanceState并检查onCreate的参数来完成的。

  2. 您可以通过在清单文件中添加android:screenOrientation="portrait"(或“landscape”)来锁定活动的一个方向。

  3. 您可以通过在<activity>标记中指定android:configChanges="screenOrientation"来告诉系统您打算自己处理屏幕更改。这样,活动将不会被重新创建,而是会收到回调(您可以忽略它,因为它对您没有用)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接