0

私の最近のプロジェクトでは、FragmentTabHost の v4 サポート ライブラリを使用しています。

タブとフラグメントが初期化されると、タグにバインドされたフラグメントが作成され、レンダリングされます。そのライフサイクルは

onCreate ==> onCreateView ==> onActivityCreated

API からデータを取得する必要があるため、onActivityCreated メソッドをオーバーライドしました。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Lg.i("on TagDiscoverListFragment activity created");

    new GetDiscoversTask().execute();

}

しかし、このタブに切り替えるたびに、この aysnTask が再度実行されます。切り替えが発生すると、フラグメントが次の呼び出しを行うためです。

onCreateView ==> onActivityCreated

データを再度更新したくありません。

確かに、FragmentTabHost を拡張して doTabChange() メソッドをオーバーライドし、フラグメントのアタッチ/デタッチ操作を非表示/表示に変更できます。

それで、他の解決策はありますか?

4

1 に答える 1

1

フラグメントの「onSaveInstanceState(Bundle outState)」をオーバーライドし、API から「outState」にデータを保存する必要があります。

タブが切り替わると onCreateView が呼び出されるので、この時点で「savedInstanceState」(第3引数)からAPIデータを取得できます

于 2013-04-09T13:11:01.790 に答える