J'essaie de lier ButterKnife à un AleterDialog que j'ai fait avec une méthode DialogBuilder Et existe cette méthode ButterKnife.bind(Object,Dialog);
mais ne fonctionne pas pour moi
import Android.support.v4.app.DialogFragment;
import Android.support.v7.app.AlertDialog;
public class NewUserDialogFragment extends DialogFragment {
@Bind(R.id.textuserAccount)
EditText textuserAccount;
@Bind(R.id.textPassword)
EditText textPassword;
@Bind(R.id.nauta_domains)
Spinner nauta_domains;
@Bind(R.id.manualConfig)
View manualConfig;
@Bind(R.id.checkViewPass)
CheckBox checkViewPass;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog dialog = new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.new_user_dialog__icon)
.setTitle(R.string.new_user_dialog_title)
.setView(R.layout.accountlist_dialog_user_)
.setPositiveButton(R.string.alert_dialog_create, void_OnClickListener)
.setNegativeButton(R.string.alert_dialog_cancel, void_OnClickListener)
.create();
//Fails!!!!!!!
ButterKnife.bind(this,dialog);
...
ERREUR:
Caused by: Java.lang.IllegalStateException: Required view 'textuserAccount' with ID 2131624044 for field 'textuserAccount' was not found. If this view is optional add '@Nullable' annotation.
at butterknife.ButterKnife$Finder.findRequiredView(ButterKnife.Java:140)
et textuserAccount = (EditText) ((Dialog) dialog).findViewById(R.id.textuserAccount);
fonctionne parfaitement
Je peux utiliser le couteau à beurre d'une manière ou d'une autre dans cette classe?
Vous devez gonfler la disposition de votre boîte de dialogue et passer l'objet View résultant à butterknife.
view = View.inflate(getContext(), R.layout.accountlist_dialog_user_, null);
ButterKnife.bind(this, view);
Du moins, c'est comme ça que j'ai utilisé Butterknife dans les dialogues et ça marche bien pour moi.
J'ai pu lier des vues dans onStart
de DialogFragment
(de la même façon que cet exemple d'application ), tout en utilisant la méthode AlertDialog.Builder#setView(int)
:
private Unbinder unbinder;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.new_user_dialog__icon)
.setTitle(R.string.new_user_dialog_title)
.setView(R.layout.accountlist_dialog_user)
.setPositiveButton(R.string.alert_dialog_create, void_OnClickListener)
.setNegativeButton(R.string.alert_dialog_cancel, void_OnClickListener)
.create();
}
@Override
public void onStart() {
super.onStart();
unbinder = ButterKnife.bind(this, getDialog());
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
Et tout fonctionne parfaitement
Dialog dialog = new Dialog(context); dialog.setContentView(R.layout.dialog_outcome); Unbinder unbinder = ButterKnife.bind(this, dialog);