1

複数のフラグメントを持つViewPagerを使用しています。(タブナビゲーション+スワイプ)。最初のListFragmentでは、カスタムアダプターを使用してデータのリストを表示しています。

問題は、タブ#3にスワイプしてから戻ると、ArrayListのサイズが0になることです。

フラグメントのすべてのデータをメモリに保持するにはどうすればよいですか?データベースから再度読み取りたくないのですが、このフラグメントに戻るときは、すべてが同じままである必要があります...

ご協力いただきありがとうございます。

4

2 に答える 2

1

あなたはできる:

  1. コンテナアクティビティでデータをホストし、フラグメントからデータにアクセスします
  2. シングルトンオブジェクト/アプリケーションクラスでホストされているクラスを使用する

ただし、プロセスが強制終了されると、どのような場合でもデータが失われることに注意してください。複数のプロセススポーンにわたってデータを永続化する場合は、データをsqllite/ある種の永続性に保存する必要があります。

于 2012-12-16T21:26:51.097 に答える
1

フラグメントガイドFragmentListの例では、次のことを見つけることができます。

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("curChoice", mCurCheckPosition);
    }

後でこのように使用できます:

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        if (savedInstanceState != null) {
            // Restore last state for checked position.
            mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
        }
}

私はFragmentsの初心者ですが、問題の解決策のようです;)onActivityCreatedは、フラグメントがバックスタックから戻った後に呼び出されます。

于 2013-05-15T12:45:29.523 に答える