NullPointerException для EditText, расположенного в диалоге

1132 просмотра

2 ответа

Вот мой email_dialog.xmlмакет:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<TableRow
    android:id="@+id/tableRow0"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</TableRow>

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <EditText
        android:id="@+id/txtEmailAddress5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress" 
        android:text="mFry@smithmicro.com"/>

</TableRow>

   <TableRow
    android:id="@+id/tableRow2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

       <Button
           android:id="@+id/btnCancelEmail"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:width="200px"
           android:text="Cancel" />

       <Button
           android:id="@+id/btnOkEmail"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:width="200px"
           android:text="Email" />

</TableRow>

Вот мой метод, который вызывает и использует его:

void showEmailDialog() {
    // Final prevents the error in the newest onClick callback.
    final Dialog dialog = new Dialog(this);

    dialog.setContentView(R.layout.email_dialog);
    dialog.setTitle("Enter Email Address");
    dialog.setCancelable(true);

    final EditText txtEA = (EditText) findViewById(R.id.txtEmailAddress5);
    final Button cancelButton = (Button) dialog.findViewById(R.id.btnCancelEmail);
    final Button sendButton = (Button) dialog.findViewById(R.id.btnOkEmail);

    // set up cancel button
    cancelButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }

    });

    // set up send button
    sendButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG, "sendButton onClick()");
            String emailAddress;

            Log.d(TAG, "sendButton onClick() - String emailAddress");

            Log.d(TAG,
                    "sendButton onClick() - txtEmailAddress = (EditText)");

            emailAddress = txtEA.getText().toString();
            Log.d(TAG,
                    "sendButton onClick() - emailAddress = getText().toString();");

            sendEmail(emailAddress);

            dialog.dismiss();

        }
    });

    dialog.show();
    //
}

TAGправильно определен, не беспокойтесь там. Я продолжаю получать:

txtEA.getText().toString() 

бросить исключение нулевой точки. У меня есть правильное R.idзначение, которое я проверил как 50 раз, я проверяю, что setContentView()это прежде, чем я пытаюсь получить доступ, EditTextи две кнопки с setOnClickListenerотлично работает.

Я мог бы определенно использовать другой взгляд на это! Я копался в подобных вопросах и пробовал их решения, но ни один из них не решил мои!

Автор: Falcon165o Источник Размещён: 12.11.2019 09:20

Ответы (2)


9 плюса

Решение

Вы должны сделать это:

 final EditText txtEA = (EditText) dialog.findViewById(R.id.txtEmailAddress5);

Вы забыли поиск txtEAв диалоге .

Автор: Luksprog Размещён: 07.03.2012 07:12

4 плюса

final EditText txtEA = (EditText) dialog.findViewById(R.id.txtEmailAddress5);

Вы должны позвонить findViewByIdна dialog.

Автор: Hesham Saeed Размещён: 07.03.2012 07:15
Вопросы из категории :
32x32