在我的应用中,我有ElementListFragment
项由代码对象Element
表示。我已将这些元素数据绑定到列表,它们显示正确的信息。
但是,为了继续填写每个项目中的信息,我在每个元素上放置一个按钮,以显示带有附加字段的Dialog
。
但是,当Dialog
打开时,所有字段均为空白(至少应填充一个字段),而我填写的任何字段都不会保存数据(也不会影响列表中的更改)。
Appart通过未绑定(显示或写入)的值,该应用程序可以正常工作。实际上,我已经尝试过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
的属性正确,但是它也绑定到对话框下方显示的列表。标题也可以正确显示。
双重绑定对象是否存在问题?
该功能上的某些步骤可能不正确吗?
DialogBuilder是否与数据绑定不兼容?
答案 0 :(得分:0)
您应为绑定类设置LyfecycleOwner
以便更新数据。
binding.setLifecycleOwner(requireActivity())