Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何替换片段_Android_Xml_Android Activity_Fragment - Fatal编程技术网

Android 如何替换片段

Android 如何替换片段,android,xml,android-activity,fragment,Android,Xml,Android Activity,Fragment,执行搜索视图时出现问题。我的searchview使用onQuetyTextChanged,在每次文本更改时显示搜索结果。当文本输入被删除时,我希望数据返回到其原始状态。我使用这个代码transaction.replace(R.id.frame\u容器,moviesFragment)以恢复片段,但搜索结果片段仍位于下面原始类似片段的图像后面。如何删除搜索结果的片段 这是我的searchView代码 final SearchView searchView = (SearchView) (menu

执行搜索视图时出现问题。我的searchview使用onQuetyTextChanged,在每次文本更改时显示搜索结果。当文本输入被删除时,我希望数据返回到其原始状态。我使用这个代码
transaction.replace(R.id.frame\u容器,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;
            }
        });
还有我的activity_main.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>


如何修复此问题?

默认颜色为透明

在片段布局中设置背景色。

有两个选项
1.将布局背景色设置为白色或任意颜色

android:background="#FFFFFF"
二,


在onQueryTextChange方法的else部分开始时。它导致了NullPointerException如何将Backback处的背景色更改为白色?在电影片段的XML文件中提供背景色如果我将颜色更改为白色,则当我执行搜索时,所有结果都将为白色,看起来像是空的
 Objects.requireNonNull(getActivity()).getSupportFragmentManager().popBackStackImmediate();