6

我创建了一个 DialogFragment 并且我想添加一个 EditText 但是当我尝试像这样添加它时:

final EditText input = new EditText(this);

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

}

4

2 回答 2

6

使用 getActivity()

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

并且不要在字段中使用它,在 getActivity 不会返回 null 的 onCreateView 中对其进行初始化

于 2012-12-24T16:59:24.433 回答
1

this需要是一个Context,即一个Activity。在片段附加到活动之前,您无法创建 EditText。在onCreateDialog你可以做到new EditText(getActivity())

于 2012-12-24T16:59:56.703 回答