0

オンデマンドで(アクティビティではなく)ビューをTabActivityに追加しています(つまり、onCreateの実行後にアクティビティに0個以上のタブを含めることができます)。時間の経過とともにタブが追加されるようになりましたが、後で復元できるように、適切な方法でタブを保存する必要があります。個々のビューでsaveHierarchyStateなどを使用しようとしましたが、editTextsなどからのデータなしで復元されます。

タブキーからビューにマップするアクティビティにHashMapがあるとすると、このデータをどのように保存して復元しますか?

4

1 に答える 1

0

わかった :)

最初に、ここで説明されているようにビューの ID を設定する必要があると考えました。このアプローチを使用すると、Android はビューの状態を復元できます。しかし、私の動的タブはすべて同じレイアウトのビューを使用するため、その子はすべて同じ ID を持つため、Android はデータを上書きします (状態はビュー ID に従ってスパース配列に保存されるため、ID は一意である必要があります)。ビューは同じに見えます。ビューの状態を手動で保存し、次の方法で再適用することで修正しました。

SparseArray<Parcelable> container = new SparseArray<Parcelable>();
saveHierarchyState(container);
b.putSparseParcelableArray("state", container);
restoreHierarchyState(b.getSparseParcelableArray("state"));

このアプローチは機能しますが、レイアウト xml ファイルでビューの ID を設定しないことで、Android にすべての作業を任せることができるかどうかを確認する必要があります (許可/可能であれば)。

于 2012-04-20T06:29:05.270 に答える