You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

满足Firebase查询匹配条件时,如何阻止Fragment页面跳转?

问题解决:匹配Firebase数据后仍跳转Fragment的问题

你的核心问题是:当查询到Firebase中存在匹配的AmazonLink时,虽然弹出了提示Toast,但代码依然执行了Fragment跳转逻辑。这是因为你没有在找到匹配项后阻止后续的跳转代码运行。

修改方案

添加一个布尔标记记录是否找到匹配链接,再根据标记决定是否执行跳转:

nextBtn.setOnClickListener(view1 -> {
    String inputLink = amazonLink.getText().toString();
    // 提前检查空输入,避免无效查询
    if (TextUtils.isEmpty(inputLink)){
        Toast.makeText(getActivity(), "Empty field not allowed!",
                Toast.LENGTH_LONG).show();
        Log.d("TAG","Testing2");
        return; // 直接返回,不执行后续逻辑
    }

    Query query = userOneRef.orderByChild("AmazonLink").equalTo(inputLink);
    query.get().addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            boolean linkExists = false;
            for (DataSnapshot ds : task.getResult().getChildren()) {
                linkExists = true; // 标记链接已存在
                String existingLink = ds.child("AmazonLink").getValue(String.class);
                Toast.makeText(getActivity(), "Amazon link already on tracker",
                        Toast.LENGTH_LONG).show();
                Log.d("TAG", existingLink);
                Log.d("TAG","Testing1");
            }

            if (!linkExists) {
                // 仅当链接不存在时执行跳转
                Log.d("TAG","Testing3");
                Bundle amazonLinkBundle = new Bundle();
                amazonLinkBundle.putString("passingLink", inputLink);
                getParentFragmentManager().setFragmentResult("gettingLink", amazonLinkBundle );
                Fragment fragment = new FinalHome_Fragment();
                FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, fragment);
                fragmentTransaction.addToBackStack(String.valueOf(Home_Fragment.class));
                fragmentTransaction.commit();
            }
        } else {
            Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
        }
    });
});

关键修改点

  1. 提前校验空输入:把空值判断移到Firebase查询前,减少无效请求,提升响应速度。
  2. 新增存在状态标记:用linkExists变量记录是否在数据库中找到匹配链接,作为跳转判断依据。
  3. 条件触发跳转:仅当linkExists为false时才执行Fragment跳转,确保匹配到数据时不触发跳转。
  4. 变量重命名规避混淆:将输入链接存入inputLink,避免和循环内的amazonLink变量重名导致逻辑混乱。

内容的提问来源于stack exchange,提问作者user19585404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:10:23