在我的Activity
我有两个Gallery
个项ExpandableListView
,而ExpandableListView
的孩子我有一个GridView
。程序运行完美。我需要的是处理方向变化。我知道,当方向更改时,活动会调用onDestroy
,然后调用onCreate
。因此,即使用户在完成方向更改之前已展开,我的ExpandableListView
也会崩溃。
我发现了一个很好的概念来处理StackOverflow中的旋转变化。这是link。我试图以这种方式实施,但我失败了。
我需要的是即使在方向改变发生之后,也要采用用户在方向改变之前使用的相同界面。请指导我。
使用清单内容进行更新
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".activities.HomeActivity"
android:configChanges="keyboardHidden|orientation|screenLayout" >
<intent-filter>
<action android:name="android.intent.action.MAIN" ></action>
<category android:name="android.intent.category.LAUNCHER" ></category>
</intent-filter>
</activity>
<activity
android:name=".activities.WebViewActivity"
android:configChanges="keyboardHidden|orientation|screenLayout" >
</activity>
</application>
答案 0 :(得分:1)
处理旋转可能很简单,取决于屏幕旋转时您必须做出的反应。如果您没有特别要做的事情,您可以随时告诉Android自己管理轮换,并避免重新启动activity
。这可以通过在AndroidManifest.xml
android:configChanges="orientation"
中声明来实现。如果您这样做,Android会拨打onConfigurationChanged
,您可以随时override
。如果希望在屏幕旋转时重新启动活动,则必须保存当前状态。也就是说,在您的情况下,当前groups
和children
可能会崩溃并重新崩溃。您可以使用onSavedInstanceState()/onRestoreInstanceState()
来保存和恢复所需的状态。
修改:如果您要定位API级别13,则必须将screenSize
选项与android:configChanges
选项一起添加orientation
选项,如documentation中所述:
屏幕方向已更改 - 用户已旋转设备。
注意:如果您的应用程序的目标是API等级13或更高(如声明的那样) 通过minSdkVersion和targetSdkVersion属性),那么你应该 还声明了“screenSize”配置,因为它也会发生变化 当设备在纵向和横向之间切换时。
答案 1 :(得分:0)
为什么不把这些东西捆绑在一起。
您将状态放在onDestroy函数的bundle中,然后在onCreate函数中读取该包。
onDestroy()
{
Bundle extras = intent.getExtras();
extras.putInt("group", 5);
extras.putInt("item", 23);
}
onCreate()
{
Bundle extras = getIntent().getExtras();
int item= extras.getInt("item");
int group= extras.getInt("group");
}
如果ExpandableListView
已展开,可以保存捆绑包。