0

私が取り組んでいるアプリケーションには、3 つのフラグメントを持つアクティビティがあります。各フラグメントは、IntentService から受信したデータを表示する必要があります。

Fragment 1 - アイコン、名前、および説明 Fragment 2 - 記事のリスト Fragment 3 - アイテムのリスト

public class Activity extends SherlockFragmentActivity implements Actionbar.Tablistener
{

    public void onCreate(..) {

        ....
        performSearch();
        setupTabs(); // 3 tabs are setup, their clicks and swipes init'ed
        ...

    }

    @Override
    public void onResume() { 

      IntentFilter intentFilter = new IntentFilter(SearchRequestReceiver.ACTION);
      intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
      searchRequestReceiver = new SearchRequestReceiver(this);
      registerReceiver(searchRequestReceiver, intentFilter);

    }

    @Override 
    public void onPause() {

      unregisterReceivers();

    }
    ...

    public void performSearch() {

        Intent intent = new Intent(this, SearchRequest.class);
        intent.putExtra("searchTerm", this.searchTerm); // declared and initialised earlier
        startService(intent);
    }

    ...
}

このデータを受信機からフラグメントにプッシュするための最良の方法は何ですか?それとも間違った方法でアプローチしていますか? サービスをコンテキストから切り離したかったので、AsyncTasks を使用しませんでしたか、それとも間違った決定でしたか?

4

2 に答える 2

0

フラグメント内にさまざまなレシーバーを配置することでなんとか機能させることができましたが、非常に多くの繰り返しのようです。

public class FragmentName extends SherlockFragment 
{

   private SearchRequestReceiver searchRequestReceiver;

   ..

   public class ServiceRequestReceiver extends BroadcastReceiver
   {

        @Override
        public void onReceive(Context context, Intent intent) {

            ...

        }

   }

}

より良い方法はありますか?

于 2014-04-27T13:40:23.833 に答える