0

特定の間隔で実行され、サーバー データに従ってクライアント側を更新する同期サービスがあります。リストビューからアイテムを削除するなど、ユーザーがサーバー データに変更を加えた場合、その変更は対応するビュー フラグメントに反映されます。

問題は、フラグメントの変更を取得していますが、それは自動ではありません。つまり、関連するフラグメントを行ったり来たりして更新を確認する必要があります。

次に、バックグラウンドで実行されている同期サービスから、対応するフラグメント ビューが変更されたことを通知され、フラグメント ビューでリフレッシュ関数を呼び出せるようにするにはどうすればよいでしょうか?

注: 特定の間隔でフラグメントを何度も更新したくありません。フラグメント ビューが変更されたときにのみ更新したい。

アップデート:

フラグメント内のリスト ビュー アイテムの数を示すアダプター数を取得しています。したがって、変更されたカウントを取得するたびに、フラグメントを更新/リフレッシュ/リロードする必要があります。したがって、私のカウントはフラグメント ビューを変更するトリガーとして機能します。

そのようなもの:

if adapter.getCount() gets changed  //how to get notified about this change
{
        FragmentTransaction transactionOld =getActivity().getSupportFragmentManager().beginTransaction();

        transactionOld.detach(this).commit();

     FragmentTransaction transactionNew = getActivity().getSupportFragmentManager().beginTransaction();

        transactionNew.attach(this).commit();
}
4

1 に答える 1

1

で を使用しBroadcastReceiverFragment登録しonStart()、 で登録解除する必要がありますonStop()

SyncServicesが完了し、データが更新されたら、 を使用してブロードキャストを送信し、表示されているかどうかsendBroadcast()を通知しますFragment

もちろん、 のBroadcastようにカスタム アクションを設定する必要がありますが、ドキュメントcom.myapp.ACTION_SYNCを読むことでこれを学習できます。

于 2013-03-29T10:03:52.513 に答える