gpt4 book ai didi

java - 如何将数据绑定(bind)与 DialogFragment 一起使用

转载 作者:行者123 更新时间:2023-12-05 07:19:15 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个 ElementListFragment 项目,由代码对象 Element 表示。我已将这些元素数据绑定(bind)到列表,它们显示了正确的信息。但是,为了继续在每个项目中填写信息,我在每个元素上放置了一个按钮,显示带有附加字段的 Dialog。但是当 Dialog 打开时,字段都是空白的(至少应该填写一个字段)并且我填写的任何字段都不会保存数据(并且不会影响列表中的更改)。

除了未绑定(bind)(显示或写入)的值外,应用程序运行良好。我基本上已经尝试了 this question 中建议的多种变体。 .这是代码:

public class ElementDialogFragment extends DialogFragment {
private Element mElement;
private Dialog dialog;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

LayoutInflater inflater = getActivity().getLayoutInflater();
View v = inflater.inflate(R.layout.dialog_element, null);

final DialogSkillelementBinding binding = DialogElementBinding.inflate(LayoutInflater.from(getContext()));

builder.setView(v)
// Add action buttons
.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//this was just an attempt to make it work
binding.executePendingBindings();
dialog.dismiss();
}
});

TextView Title = v.findViewById(R.id.skill_e_dialog_title);
Title.setText(ResourceLocator.getSkillName(mElement.getSkill()));

dialog = builder.create();
dialog.setContentView(binding.getRoot());

binding.setElement(mElement);
binding.executePendingBindings();

return dialog;
}
}

调试时,我已确认 mElement 的属性正确,但它也绑定(bind)到对话框下方显示的列表。标题也正确显示。

双重绑定(bind)一个对象有问题吗?

函数中的某些步骤是否有问题?

DialogBu​​ilder 是否与数据绑定(bind)不兼容?

最佳答案

您应该为您的数据更新绑定(bind)类设置LyfecycleOwner

binding.setLifecycleOwner(requireActivity())

关于java - 如何将数据绑定(bind)与 DialogFragment 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57862002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com