I am having trouble in implementing databinding in a Dialog. Is it possible?
Below is my xml.
DataBindingUtil
for generated classes as said in Android DocumentationYou should use generated binding class's inflate
& bind
method (MyDialogBinding.inflate
).
public void showDialog(final Context context) {
Dialog dialog = new Dialog(context);
MyDialogBinding binding = MyDialogBinding.inflate(LayoutInflater.from(context));
dialog.setContentView(binding.getRoot());
dialog.show();
}
Binding Document says for DataBindingUtil
class's inflate method
.
Use this version only if layoutId is unknown in advance. Otherwise, use the generated Binding's inflate method to ensure type-safe inflation. DataBindingUtil.inflate(LayoutInflater.from(getContext()),R.layout.my_info_dialog_layout, null, false);
This is like finding binding generated class, when we have class already.
MyDialogBinding binding = MyDialogBinding.inflate(LayoutInflater.from(context));
or if you want make another class.
public class MyDialog extends Dialog {
public MyDialog(@NonNull Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyDialogBinding binding = MyDialogBinding.inflate(LayoutInflater.from(getContext()));
setContentView(binding.getRoot());
}
}