2010-04-07 71 views
12

我有ListView中的Activity和Activity的onCreate方法我有用于填充ListView的Data的代码这个Data是基于服务器的,因此填充包括调用Network URLs 。我有相同Activity类中的ListView的ArrayAdapter。活动中的Android ListView在更改方向时刷新

现在我所面临的问题是,在其余所有情况下,我的活动都以正确的方式行事,但是当方向[肖像转为景观或其他方式]发生时,数据正在丢失并且数据较新调用是需要填充相同的旧数据现在,这是不是打算出代码,我应该如何处理它。

回答

23

Android会停止并重新启动您的活动,除非您已经告诉它您将自行处理方向更改。它这样做是为了您可以指定不同的资源(例如布局),这些资源是特定于方向的(除其他原因外)。

您需要将android:configChanges="orientation"添加到您的AndroidManifest.xml中的活动分析中,并且您需要覆盖onConfigurationChanged()。我不相信你需要在onConfigurationChanged()中做任何特别的事情,只是简单地实现它就应该做到这一点。

+6

我认为您不需要重写onConfigurationChanged()。添加android:configChanges应该足够了。 – 2010-04-07 12:49:16

+1

OMG这是我可以想象的最大的救济...你不知道你是如何拯救了我的生命...谢谢吨对于你刚刚给我的WonderFul洞察力.. – 2010-04-07 13:08:07

+0

来想一想, janfsd可能是正确的......如果你在onConfigurationChanged中没有做任何有用的事情,那就让默认实现做到这一点。 – rascalking 2010-04-07 13:56:27

2

AFAIK整个活动重新获得方向变化! 如果您切换到anoter应用程序并稍后返回,情况也是如此。 我建议存储数据是SharedPreferences或将它们序列化到XML中并存储它们。

另一种可能性可能是注册您自己的将数据存储在内存中的服务,并且该活动会聚合服务中的数据。

+0

我认为注册服务是最好的选择是如此。 – 2010-04-07 06:07:20

+0

我在哪里可以更深入地了解Android服务以实现我的目的 – 2010-04-07 09:56:54

12

对于那些针对API 13或更高版本,“screenSize”也应该使用。如果是你的情况,请将

android:configChanges="orientation|screenSize" 

添加到您的Android清单。

更多信息here

0
android:configChanges="orientation|screenSize" 

只有当我们没有横向模式的另一个布局时,这些代码才能使用!