Итак, когда я начинаю проигрывать песню и переключаю фрагмент, и песня продолжает играть.Когда я переключаюсь обратно после этого, я получаю полностью белый фрагмент.Прямо сейчас у меня есть три фрагмента, но только два из них получают белый экран.Содержимое фрагментов является FirebaseRecyclerView.Проблема появилась впервые, когда я закончил реализацию медиаплеера.
Я уже пытался сбросить медиаплеер при переключении фрагментов, но мне не удалось это сделать, так как доступ к медиаплеерув окне просмотра Recyclerview.Это потому, что каждая запись в списке имеет свои собственные элементы управления медиаплеером.
public class MyPostsFragment extends PostListFragment {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
public MyPostsFragment() {
}
@Override
public Query getQuery(DatabaseReference databaseReference) {
return databaseReference.child("user-posts").child(user.getUid())
.limitToFirst(100);
}
}
Это запрос к одному из фрагментов белого экрана
public abstract class PostListFragment extends Fragment {
private RecyclerView mRecycler;
private FirebaseRecyclerAdapter<Post, PostViewHolder> mAdapter;
private DatabaseReference mDatabase;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View rootView = inflater.inflate(R.layout.fragment_all_posts, container, false);
mDatabase = FirebaseDatabase.getInstance().getReference();
mRecycler = rootView.findViewById(R.id.postList);
mRecycler.setHasFixedSize(true);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LinearLayoutManager mManager = new LinearLayoutManager(getActivity());
mManager.setReverseLayout(true);
mManager.setStackFromEnd(true);
mRecycler.setLayoutManager(mManager);
Query postsQuery = getQuery(mDatabase);
FirebaseRecyclerOptions<Post> options = new FirebaseRecyclerOptions.Builder<Post>()
.setQuery(postsQuery, Post.class)
.build();
mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(options) {
@NonNull
@Override
public PostViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
return new PostViewHolder(inflater.inflate(R.layout.postcard, viewGroup, false));
}
@Override
protected void onBindViewHolder(@NonNull final PostViewHolder viewHolder, final int position,
@NonNull Post model) {
Post postInstance = this.getItem(position);
viewHolder.display(postInstance);
final DatabaseReference postRef = getRef(viewHolder.getAdapterPosition());
final String postKey = postRef.getKey();
viewHolder.bindToPost(model, postKey);
}
};
mRecycler.setAdapter(mAdapter);
}
protected abstract Query getQuery(DatabaseReference mDatabase);
@Override
public void onStart() {
super.onStart();
if (mAdapter != null) {
mAdapter.startListening();
}
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStop() {
super.onStop();
if (mAdapter != null) {
mAdapter.stopListening();
}
}
Это класс каждогоФрагмент реализует
Для меня не имеет значения, останавливается ли медиаплеер или нет, но нужно пропустить белые экраны: -)
Заранее спасибо за помощь!