2014-03-04 87 views
4

我已经在我的应用程序中实现了Facebook。当屏幕旋转时Facebook登录窗口关闭

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

enter image description here

但是当我旋转模拟器然后将其关闭登录窗口。

enter image description here

任何解决方案。

+2

当屏幕旋转的活动被破坏并重新创建 – Raghunandan

+0

是的它的重现活动,但如何防止它。 –

+0

您可以防止重新创建活动,但您应该处理配置更改。检查文档有一个相同的主题。 http://developer.android.com/guide/topics/resources/runtime-changes.html – Raghunandan

回答

3

清单文件添加这为您的活动

android:configChanges="keyboardHidden|screenSize|orientation" 
+1

注意:当您声明您的活动来处理配置更改时,您有责任重新设置您提供替代方案的任何元素。如果声明活动来处理方向更改并使图像在横向和纵向之间更改,则必须在onConfigurationChanged()过程中将每个资源重新分配给每个元素。 – Raghunandan

+0

screenSize不存在 –

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); 
} 
+0

什么样的代码我需要写在之间任何小的前。 ? –

+0

@ShabbirDhangot http://developer.android.com/guide/topics/resources/runtime-changes.html – Raghunandan

+0

@Raghunandan我理解你在说的概念。但facebook登录窗口正在使用webview ..当它旋转时,webview被破坏。如何恢复这种情况。 –

0

问题可能是因为屏幕方向配置的变化,你可以尝试以下方法解决:

  1. 由于部分答案建议,您可以区分 您首次创建的活动和正在从savedInstanceState恢复 的案例。这是通过覆盖 onSaveInstanceState并检查onCreate的参数来完成的。

  2. 你可以在你的清单中添加 android:screenOrientation="portrait"(或“风景”),以 锁定在一个方向活动。

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