简体   繁体   English

如何将EditText添加到DialogFragment?

[英]How do I add an EditText to a DialogFragment?

I have created a DialogFragment and I would like to add an EditText but when I try and add it like this: 我创建了一个DialogFragment,我想添加一个EditText但是当我尝试添加它时:

final EditText input = new EditText(this);

I get an error on the "this" saying "The constructor EditText(EncryptionDialogFragment) is undefined". 我在“this”上写错了“构造函数EditText(EncryptionDialogFragment)未定义”。

My ultimate goal is to have the user enter their password this way. 我的最终目标是让用户以这种方式输入密码。

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();
} 

} }

Use getActivity() 使用getActivity()

final EditText input = new EditText(getActivity());

and dont use it in field, initialize it in onCreateView where getActivity will not return null 并且不要在字段中使用它,在onCreateView中初始化它,其中getActivity不会返回null

this needs to be a Context, ie an Activity. this需要是一个Context,即一个Activity。 You can't create the EditText before your fragment has been attached to an activity. 在片段附加到活动之前,您无法创建EditText。 In onCreateDialog you can do new EditText(getActivity()) . onCreateDialog您可以执行new EditText(getActivity())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM