Как добавить EditText в DialogFragment?
Я создал DialogFragment, и я хотел бы добавить EditText, но когда я пытаюсь добавить его так:
final EditText input = new EditText(this);
Я получаю сообщение об ошибке" это", говоря: "конструктор EditText (EncryptionDialogFragment) не определен".
моя конечная цель - заставить пользователя ввести свой пароль таким образом.
public class EncryptionDialogFragment extends DialogFragment {
final EditText input = new EditText(this);
static EncryptionDialogFragment newInstance(String title){
EncryptionDialogFragment fragment = new EncryptionDialogFragment();
Bundle args = new Bundle();
args.putString("title", title);
fragment.setArguments(args);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.ic_launcher)
.setTitle("Enter Password:")
.setView(input)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
((MainActivity)getActivity()).doPositiveClick();
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
((MainActivity)getActivity()).doNegativeClick();
}
}).create();
}
}
2 ответов
использовать getActivity()
final EditText input = new EditText(getActivity());
и не используйте его в поле, инициализируйте его в onCreateView, где getActivity не вернет null
this
должен быть контекст, т. е. активности. Вы не можете создать EditText до того, как ваш фрагмент будет присоединен к действию. В onCreateDialog
можно сделать new EditText(getActivity())
.