java - 将值从一个 fragment 传递到另一个 fragment 后清除 bundler

标签 java android

我使用 Bundle 将两个值从一个 fragment 传递到另一个 fragment 。 检索值的 fragment 将它们放入 Recycler View 适配器中。 当值已经从一个 fragment 传递到另一个 fragment 时,我想清除 bundler 。 我怎样才能清除它?这是我的 bundler :

  bundler.putStringArrayList("listOfImages", (ArrayList<String>) randomImagemPaisList);
                            bundler.putStringArrayList("listOfNames", (ArrayList<String>) randomNomePaisList);
                            fragment.setArguments(bundler);

我尝试在 transaction.commit 之后清除 bundler ,但即使我这样做,也不会传递任何值...

编辑

正如我告诉过你的,我通过 Bundler 将两个值从一个 fragment 传递到另一个 fragment 。例如,当用户在我的 SearchView 中写入“Po”时,我会查询 Firebase 数据库结果以仅显示以“Po”开头的国家/地区,而在我的适配器中,它会显示 2 个国家/地区。但在那之后,如果我再搜索一个像“ta”这样的字符串,它会向我显示以前的国家和新的国家。我尝试清除适配器中的列表,但问题是,在通过 Bundler 传递的值中,旧的列表不会被删除,新的列表会在之后添加... 这是接收值并在 Recycler View 适配器

中设置它们的 fragment
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();

    }
}


}

最佳答案

请在接收的Fragment中使用remove方法(在您不再需要这些值之后):

getArguments().remove("listOfImages");
getArguments().remove("listOfNames");

关于java - 将值从一个 fragment 传递到另一个 fragment 后清除 bundler ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51332781/

相关文章:

Android Studio 不按包名称显示日志

java - REST 调用返回空白 XML

javascript - 在 Cordova/Phonegap 应用程序中实现 Stripe 支付网关

android - 如何将对象数组传递给 Activity?

java - AutoConfigureMybatis注解是什么意思?

android - iBeacon技术在Android中的实现

Android:防止用户在登录后返回登录页面

java - 带 Button 按钮参数的方法

openjdk 1.8 的 Java SSL 通信握手失败

java - 使用 junit4 进行单元测试