Почему я получаю белый экран при переключении фрагментов во время воспроизведения звуков с помощью MediaPlayer - PullRequest
0 голосов
/ 16 мая 2019

Итак, когда я начинаю проигрывать песню и переключаю фрагмент, и песня продолжает играть.Когда я переключаюсь обратно после этого, я получаю полностью белый фрагмент.Прямо сейчас у меня есть три фрагмента, но только два из них получают белый экран.Содержимое фрагментов является 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();
        }
    }

Это класс каждогоФрагмент реализует

Для меня не имеет значения, останавливается ли медиаплеер или нет, но нужно пропустить белые экраны: -)

Заранее спасибо за помощь!

...