Я довольно новичок в RxJava, и я думал, что если моя проблема может быть решена с ним.Передача данных между фрагментами с наблюдаемым при X происходит
У меня есть активность с двумя фрагментами: фрагмент заголовка, размещенный внутри CollapsingToolbarLayout, и фрагмент тела. Фрагмент заголовка имеет вид ресайзера с сообщениями, а фрагмент тела - комментарии, относящиеся к текущему сообщению, показанному в фрагменте заголовка.
Теперь комментарии загружаются сразу же, когда просмотр ресайклера связывает сообщение. Тем не менее, я бы хотел только загрузить комментарии, когда пользователь начинает сбрасывать панель инструментов. У меня есть слушатель, настроенный для панели инструментов, которая вызывается, когда пользователь начинает перетаскивать панель инструментов, но я не знаю, как подключить ее к фрагменту тела, используя текущую запись в фрагменте заголовка.
Чтобы описать его в псевдо-коде, это что-то вроде этого:
// 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);
}
}
Любые идеи о том, как решить эту ?