Android 如何替换片段
执行搜索视图时出现问题。我的searchview使用onQuetyTextChanged,在每次文本更改时显示搜索结果。当文本输入被删除时,我希望数据返回到其原始状态。我使用这个代码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
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();