【问题标题】:How do I add an EditText to a DialogFragment?如何将 EditText 添加到 DialogFragment?
【发布时间】:2012-12-24 16:57:01
【问题描述】:

我创建了一个 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();
} 

}

【问题讨论】:

    标签: android dialog android-edittext


    【解决方案1】:

    使用 getActivity()

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-02-10
        • 1970-01-01
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        • 2015-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多