Как получить доступ к методу findViewById внутри события Dialog onClick - PullRequest
0 голосов
/ 14 января 2019

У меня есть собственный XML-файл макета с именем login_form с корнем LinearLayout с именем login_form_root. Я пытаюсь отобразить этот макет, используя диалоговое окно, но не могу получить значения из EditText, поскольку я получаю, не могу разрешить метод findViewById внутри onCreateDialog.

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.login_form, null));
builder.setPositiveButton(okText, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
       View myView = inflater.inflate(R.layout.login_form, (ViewGroup) findViewById(R.id.login_form_root));
       EditText userEmail = (EditText) myView.findViewById(R.id.email_address);
       userEmailValue = userEmail.getText().toString();
       Toast.makeText(getActivity(), userEmailValue, Toast.LENGTH_SHORT).show();
        }

Ошибка здесь: -

"(ViewGroup) findViewById (R.id.login_form_root)"

так, как я могу надуть пользовательский макет, чтобы получить значения EditText?

1 Ответ

0 голосов
/ 14 января 2019

Вы должны сохранить вид при его накачке, затем вы сможете использовать его позже


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


...