1

Activityには 2 つの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。画面が回転したときにアクティビティを再開したい場合は、現在の状態を保存する必要があります。つまり、あなたの場合、それは現在groupsおよびchildren現在崩壊し、再崩壊する可能性があります。を使用onSavedInstanceState()/onRestoreInstanceState()して、必要な状態を保存および復元できます。

編集: API レベル 13 をターゲットにしている場合は、ドキュメントに記載されているオプションと組み合わせてscreenSizeオプションを追加する必要があります。android:configChangesorientation

画面の向きが変更されました — ユーザーがデバイスを回転させました。

注: アプリケーションが 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 に答える