位图不更新/显示旧值

Bitmap not updating/ showing old values

我有一个线性布局,其中包含多个要由用户填写的字段。这些字段将用文本或十进制数字填充,它们都是带有一个日期选择器的 TextInputLayouts。用户填写完这些字段后,我有一个查看按钮,单击该按钮会显示在图像视图中输入的所有值的预览。我通过使用位图和 canvas 显示图像,并使用以下代码将位图作为参数发送到我的 material 底部 sheet。

private Bitmap getDailySheetBitmap() {
    Bitmap bitmap = Bitmap.createBitmap(completeSheetLinearLayout.getWidth(), completeSheetLinearLayout.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Log.d("Bitmap", "bitmap size: "+bitmap.getByteCount());
    completeSheetLinearLayout.draw(canvas);
    return bitmap;
}

发送arg的代码是

private void buildBottomSheet(Bitmap bitmap) {
    Bundle args = new Bundle();
    args.putParcelable("Bitmap", bitmap);
    ViewDailySheet viewDailySheet = new ViewDailySheet();
    viewDailySheet.setArguments(args);
    viewDailySheet.show(getChildFragmentManager(), "DailySheet");
}

问题在于,在用户查看字段并对这些字段进行更改后,当用户再次单击查看按钮时,会显示具有相同旧值的位图。我试过回收位图,使视图、requestLayout() 和 forceLayout() 方法无效。但是 none 有用。

这是将位图放入图像的代码 view.This 在底部 sheet 对话框片段中。

 if (getArguments() != null) {
        bitmap = getArguments().getParcelable("Bitmap");
        binding.dailySheetImage.invalidate();
        binding.dailySheetImage.setImageBitmap(bitmap);
        getArguments().clear();
    }

我做错了什么或遗漏了什么?

位图只捕获它认为已更改的内容。如果文本字段(不是数据,只是 UI)没有改变,它将显示与以前相同的文本字段值。所以我刷新了整个布局,因为它会通过以下代码重新绘制整个布局。

private void refreshView() {
    completeSheetLinearLayout.setVisibility(View.GONE);
    completeSheetLinearLayout.setVisibility(View.VISIBLE);
}

我把这段代码放在创建位图之前。