Как добавить 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()).