java - 将值从一个片段传递到另一个片段后清除捆绑器
问题描述
我将两个值从一个片段传递到另一个片段,使用Bundle
. 检索值的片段将它们放入 Recycler View 适配器中。当值已经从一个片段传递到另一个片段时,我想清除捆绑器。我怎样才能清除它?这是我的捆绑器:
bundler.putStringArrayList("listOfImages", (ArrayList<String>) randomImagemPaisList);
bundler.putStringArrayList("listOfNames", (ArrayList<String>) randomNomePaisList);
fragment.setArguments(bundler);
之后我试图清除捆绑器,transaction.commit
但即使我这样做了,也没有传递任何值......
编辑
正如我告诉你的,我将Bundler
两个值从一个片段传递到另一个片段。例如,当用户在我的 SearchView 中写入“Po”时,我查询 Firebase DB 结果以仅显示以“Po”开头的国家,而在我的适配器中它显示了 2 个国家。但在那之后,如果我再搜索一个像“ta”这样的字符串,它会显示以前的国家和新的国家。我试图清除适配器中的列表,但问题是,在通过Bundler
旧的值传递的值不会被删除,新的值是在之后添加的......这是接收值和集合的片段它们在Recycler View 适配器中
public class FilteredResultsFragment extends android.support.v4.app.Fragment {
ImageAdapter imageAdapter;
List<String> listOfImages = new ArrayList<>();
List<String> listOfNames = new ArrayList<>();
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View viewFilteredResults = inflater.inflate(R.layout.fragment_filtered_results, container, false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
int UI_OPTIONS = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
getActivity().getWindow().getDecorView().setSystemUiVisibility(UI_OPTIONS);
}
recyclerView = viewFilteredResults.findViewById(R.id.recyclerViewFiltered);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
imageAdapter = new ImageAdapter(listOfImages, listOfNames, getContext());
recyclerView.setAdapter(imageAdapter);
return viewFilteredResults;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (getArguments() != null) {
listOfImages.clear();
listOfNames.clear();
listOfImages.addAll(getArguments().getStringArrayList("listOfImages"));
listOfNames.addAll(getArguments().getStringArrayList("listOfNames"));
Log.d("TESTETAMANHO","SIZE "+listOfNames);
//final Bundle bundler = new Bundle();
//bundler.remove("listOfImages");
//bundler.remove("listOfNames");
imageAdapter.notifyDataSetChanged();
}
}
}
解决方案
请remove
在接收时使用方法Fragment
(在您不再需要这些值之后):
getArguments().remove("listOfImages");
getArguments().remove("listOfNames");
推荐阅读
- spring-boot - 如何使 ARTIFACT_NAME 动态化?
- node.js - Firebase Cloud 函数应返回自定义模型类而不是 json
- discord - 停止客户端事件 | 不和谐 JS
- android - 如何从 TextViews 中获取文本值,将它们转换为整数并以编程方式操作它们?
- reactjs - ReactHooks 使用 setInterval 在 useEffect 中出现意外的数组行为
- oracle - 如何重现流程的代码:Form - Automatic Row Processing (DML)
- java - 谷歌计费库 - 订阅购买后片段消失
- python - 输入后删除对象
- .net - .Net Web 应用程序 SQL Server 连接字符串 Linux 问题
- html - CSS Flexbox - 如何在换行后添加特定元素?