如何在Dialog onClick事件中访问'findViewById'方法

时间:2019-01-14 15:01:59

标签: android android-layout android-dialogfragment layout-inflater

我有一个名为login_form的自定义布局xml文件,其根名为LinearLayout的{​​{1}}。我正在尝试使用对话框显示此布局,但由于无法解析onCreateDialog中的方法login_form_root,因此无法从EditText获取值。

findViewById

错误在这里:-

  

“(ViewGroup)findViewById(R.id.login_form_root)”

那么我该如何膨胀自定义布局以获得EditText值?

1 个答案:

答案 0 :(得分:2)

您应在充气时保存视图,然后再使用


        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
        final View view = layoutInflater.inflate(R.layout.login_form, null);
        builder.setView(view);
        AlertDialog dialog = builder.create();

        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                EditText userEmail = (EditText) view.findViewById(R.id.email_address);
                String userEmailValue = userEmail.getText().toString();
            }
        });