0

私のアプリはフラグメントを使用して、ListView を縦向きモードで表示するか、ListView と「詳細」ビューを横向きモードで並べて表示します。AsyncTask を開始する ActionBar のメニュー項目もあります。問題は、AsyncTask の実行中にユーザーがディスプレイを縦向きから横向き (またはその逆) に回転すると、AsyncTask が強制終了されることです。AsyncTask が停止しないように修正するために、configChanges 属性を AndroidManifest に追加しました。

    <activity android:name="ListingFragment" android:configChanges="keyboardHidden|orientation" />

ただし、その属性を追加すると、フラグメントが横向き/縦向きビューに自動的に切り替わらなくなります。AsyncTask を強制終了せずにフラグメントのビューを自動的に切り替える方法はありますか?

4

1 に答える 1

1

アクティビティが強制終了される前に、非同期タスクのインスタンスを保存する必要があります。onRetainCustomNonConfigurationInstance()を使用して保存できます。次に、oncreateで、を使用して取得できますgetLastCustomNonConfigurationInstance()。次に、onCreateで、アクティビティを非同期タスクに再度「アタッチ」できます。

于 2012-04-08T18:36:36.357 に答える