1

在我的Activity我有两个Gallery项目之一ExpandableListView,对于我的孩子ExpandableListView我有一个GridView. 程序运行完美。我需要的是处理方向变化。我知道,当方向改变时,活动会调用onDestroy,然后onCreate。因此,ExpandableListView即使用户在更改方向之前已经扩展,我的意志也会崩溃。

我发现了一个在 StackOverflow 中处理旋转变化的好概念。这是链接。我试图以这种方式实施,但我失败了。

我需要的是采用与用户在方向改变之前使用的相同的界面,即使在方向改变发生之后也是如此。请指导我。

更新清单内容

<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>
4

2 回答 2

1

处理旋转可能是微不足道的,并且取决于您在屏幕旋转时必须做出的反应。如果您没有什么特别的事情要做,您可以随时告诉 Android 自己来管理轮换,并避免重新启动您的activity. 这可以通过在AndroidManifest.xml android:configChanges="orientation". 如果你这样做,Android 会调用onConfigurationChanged,你可以随时调用override。如果您希望在屏幕旋转时重新启动活动,则必须保存当前状态。也就是说,在您的情况下,它可能是当前groupschildren当前崩溃并重新崩溃。您可以使用它onSavedInstanceState()/onRestoreInstanceState()来保存和恢复您需要的状态。

编辑:如果您的目标是 API 级别 13,则必须将screenSize选项与文档中所述的选项android:configChanges一起添加:orientation

屏幕方向发生了变化——用户旋转了设备。

注意:如果您的应用程序以 API 级别 13 或更高级别为目标(由 minSdkVersion 和 targetSdkVersion 属性声明),那么您还应该声明“screenSize”配置,因为当设备在纵向和横向之间切换时它也会改变。

于 2012-05-18T09:00:44.527 回答
0

你为什么不把这些东西放在一个包里。

您将状态放在onDestroy 函数中的中,然后在 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如果扩展包,您可以保存捆绑包。

于 2012-05-18T09:03:58.597 回答