3

私のアプリケーションでは、メイン アクティビティ ビューのコンテナにフラグメントを動的に追加しています。Fragment を追加するときに Otto を使用する場合、データを渡す最良の方法を教えてください。現在、これが私がやっている方法です。たとえば、CustomObject を投稿していません。

メイン アクティビティの内部

    getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, MY_CUSTOM_FRAGMENT).commit();
    BusProvider.getInstance().post(produceCustomString());

インサイド マイ フラグメント

    @Subscribe
    public void onCustomStringChanged(String customString) {
    } 
4

1 に答える 1

12

同じタイプ@Subscribeのメソッドも登録されている場合、注釈付きのメソッドが自動的に呼び出されます。@Produce

このようなデータの新しいフラグメントを通知する最良の@Produce方法は、アクティビティに関するメソッドがあることです。

@Produce public String produceCustomString() {
  return "Hello, World!";
}

そして、@Subscribeメソッドを持つすべてのフラグメント:

@Subscribe public void onCustomStringEvent(String event) {
  // ...
}

このメソッドを持つフラグメントを登録すると、Ottoは@Produceアクティビティのメソッドを呼び出して、フラグメントのメソッドに渡す最新の値を取得します。

于 2013-01-29T23:46:22.117 に答える