Как заменить фрагмент - PullRequest
0 голосов
/ 03 февраля 2020

У меня проблема при поиске. Мой поисковый запрос использует onQuetyTextChanged, чтобы показывать результаты поиска каждый раз, когда текст изменяется. Я хочу, чтобы данные возвращались в исходное состояние при удалении ввода текста. Я использую этот код transaction.replace(R.id.frame_container, moviesFragment); для восстановления фрагмента, но фрагмент результата поиска все еще находится за исходным фрагментом, как на картинке ниже. Как удалить фрагмент результатов поиска?

Изображение после выполнения поиска. Это мой код searchView

 final SearchView searchView = (SearchView) (menu.findItem(R.id.search)).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String query) {
                searchView.clearFocus();
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                if (newText.length() > 0) {
                    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                    Bundle bundle = new Bundle();
                    bundle.putString("query", newText);
                    SearchMovieFragment fragment = new SearchMovieFragment();
                    fragment.setArguments(bundle);
                    transaction.replace(R.id.frame_container, fragment);
                    transaction.commit();
                } else {
                    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                    MoviesFragment moviesFragment = new MoviesFragment();
                    transaction.replace(R.id.frame_container, moviesFragment);
                    transaction.commit();
                }
                return false;
            }
        });

и мой код деятельности. xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fitsSystemWindows="true"
android:background="@android:color/white"
tools:context=".MainActivity">

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/color_primary_gradient"
    app:tabTextColor="#D4AF37"/>

<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Существует два варианта
1. установить цвет фона макета на белый или любой

android:background="#FFFFFF"

2.

 Objects.requireNonNull(getActivity()).getSupportFragmentManager().popBackStackImmediate();
0 голосов
/ 03 февраля 2020

Цвет по умолчанию прозрачный.

Установите цвет фона в макете фрагмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...