2011-11-11 79 views
3

我已经发布了这个问题安卓:屏幕方向变化

http://www.devx.com/wireless/Article/40792/1954

Saving Android Activity state using Save Instance State

http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html

How to save state during orientation change in Android if the state is made of my classes?

我没有得到见过以下链接保存应用程序状态我应该如何覆盖以下功能:

@Override 
    public Object onRetainNonConfigurationInstance() { 
     return someExpensiveObject; 
    } 

在我的应用我有一个editext可见光和其他布局editext获得可见当第一editext的数据验证,以真实的。我已经将所有其他editextes和textviews假的visbility,让他们后可见证实。

因此,在我的活动中,如果屏幕方向改变,那么所有具有android:visibility="false"的项目都不可见。

我也才知道,当我们的活动,屏幕方向改变它调用的onStop()之后的onDestroy(),然后再通过调用的onCreate开始一个新的活动()

这就是原因。但我没有得到如何解决呢..

在这里你可以看到我的应用程序的截图:

enter image description here 在此图像中的所有字段都加载 而在另一个图像时,屏幕方向改为景观他们是一个LL不见了

enter image description here

任何连结教程或一段代码将是非常明显的。

而且我的应用程序崩溃时,进度对话框显示出来,我试图改变屏幕orientation.How处理这??

感谢

+0

关于如何处理使用保存的实例状态包检查活动状态的很好的教程http://www.quicktips.in/handling-activity-state-using-saved-instance-state-bundle/ –

回答

7

那么如果你有两个屏幕相同layout那么就没有必要这么做只是添加下面一行在你manifestActivity节点

android:configChanges="keyboardHidden|orientation" 

为Android 3.2(API级别13)和更新:

android:configChanges="keyboardHidden|orientation|screenSize" 

因为“屏幕尺寸”也会在设备在肖像和landsc之间切换时发生变化猿定位。文档在这里:http://developer.android.com/guide/topics/manifest/activity-element.html

+0

感谢您的回复和它为我工作...那么,这个'onRetainNonConfigurationInstance()'函数用于? – Shruti

+0

+1确切的捕获。 –

+0

@Shruti它使用,如果你有不同的布局文件,你必须保存数据的布局更改,因为布局交换在这种情况下 – ingsaurabh

1

还有另一种可能性,即使在使用onConfigurationChanged(Configuration newConfig)进行方向更改时,也可以使用它来保持状态。

当您的活动正在运行时设备配置发生变化时由系统调用。请注意,只有在您选择的配置中您想要使用清单中的configChanges属性进行处理时才会调用它。如果发生任何未被该属性选择报告的配置更改,则不会报告该系统,系统将停止并重新启动活动(使其通过新配置启动)。

在调用此函数时,您的Resources对象将被更新为返回与新配置匹配的资源值。