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

Fragment内EditText绑定DatePickerDialog选完日期不更新问题求助

问题根因

Fragment Result API要求结果发送方和接收方使用同一个FragmentManager实例,你的代码两端使用的FragmentManager不匹配,导致回调无法触发:

  • 显示FragmentData时,你使用的是Activity级别的SupportFragmentManager
  • 注册结果监听时,你使用的是当前Fragment的getChildFragmentManager
    两个FragmentManager属于不同的上下文,自然接收不到回调事件。
修复方案

统一两端的FragmentManager即可,推荐使用当前Fragment的getChildFragmentManager管理子DialogFragment,修改代码如下:

1. 调整FragmentAggiungiPaziente代码

将FragmentManager实例替换为getChildFragmentManager,同时将监听器注册逻辑移到点击事件外部,避免每次点击重复注册:

// 替换原来的Activity FragmentManager获取逻辑
final FragmentManager fm = getChildFragmentManager();
dataPaz = view.findViewById(R.id.dataPazNew);

// 提前注册结果监听器,仅执行一次
getChildFragmentManager().setFragmentResultListener("chiaveRichiesta", getViewLifecycleOwner(), new FragmentResultListener() {
    @Override
    public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) {
        String risultato = result.getString("chiaveRisultato");
        if (risultato != null) {
            dataPaz.setText(risultato);
        }
    }
});

dataPaz.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        FragmentData newFragment = new FragmentData();
        newFragment.show(fm, "data");
    }
});

2. 可选校验

如果修改后仍无效果,可以在FragmentData的onDateSet方法中加日志确认返回的日期值非空,同时检查布局中dataPazNew这个EditText没有设置android:enabled="false"、android:focusable="false"等会拦截文本更新的属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:06:05