私はRxJavaをかなり新しくしています。問題が解決できれば私は考えていました。Xが発生したときObservableでフラグメント間でデータを渡す
私は、CollapsingToolbarLayout内にホストされているヘッダーフラグメントとボディーフラグメントの2つのフラグメントでアクティビティーを持っています。ヘッダーフラグメントには、投稿を含むリサイクラービューがあり、本文フラグメントには、ヘッダーフラグメントに表示されている現在の投稿に関連するコメントが表示されます。
リサイクラビューが投稿をバインドするとすぐにコメントが読み込まれます。しかし、ユーザーがツールバーの折り畳みを開始するときにのみ、コメントをロードしたいと思います。ユーザーがツールバーのドラッグを開始したときに呼び出されるツールバー用のリスナーが設定されていますが、ヘッダーフラグメント内の現在のポストを使用して本体のフラグメントに接続する方法はわかりません。擬似コードでそれを記述するために
が、それはこのようなものです:現時点では
// Activity has this method invoked when toolbar starts collapsing;
// It's invoked only once per "drag"
public void onToolbarCollapsing() {
// Somehow should pass the Post to the body fragment..?
}
// The header fragment has this method invoked when a post is bound
public void onPostBound(Post post) {
// Create an Observable<Post> and pass it to activity..?
}
// The body fragment could probably observe the observable?
、私はActivity
が実装していActivityCallback
:
public interface ActivityCallback {
void loadCommentsFor(Post post);
}
public class MainActivity extends AppCompatActivity implements ActivityCallback {
@Override void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create fragments, set activity callback to the header fragment
HeaderFragment header = new HeaderFragment();
header.setActivityCallback(this);
BodyFragment body = new BodyFragment();
// Set fragments to the view etc.
}
// Implementation
@Override
public void loadCommentsFor(Post post) {
// Just pass the post object to the body fragment
bodyFragment.loadCommentsFor(post);
}
}
これに対処する方法上の任意のアイデア?