Проблема с Cusom Dialog для ProgressDialog

1

У меня есть LoginDialog, вызванный из Activity. В LoginDialog я пытаюсь открыть другой диалог (mProgressDlg), чтобы указать прогресс. В макете mProgressDlg у меня есть 2 TextView. Я получаю NullPointerException в setText() любого из этих TextView.

LoginDialog:

    private Dialog mProgressDlg;
     private TextView mMessage, mprogTitle, mProgMessage;
public LoginDialog(Context context) {
    super(context);
    mContext = context;
    ld = null;
    init();
    }
private void init() {
    this.setContentView(R.layout.user_pass_dialog);

    mMessage = (TextView) findViewById(R.id.messageText);
    mMessage.setText("Loaded ");

    // ProgressDialog
    mProgressDlg = new Dialog(mContext);
    mProgressDlg.setContentView(R.layout.progress_dialog);
    mProgTitle = (TextView) findViewById(R.id.titleText_progressDlg);
    mProgMessage = (TextView) findViewById(R.id.message_progressDlg);
    // On below 2 lines, I get NPE.
    mProgTitle.setText("Hello");
    mProgMessage.setText("Good Day");
}

progressDialog.xml

    <TextView android:id="@+id/titleText_progressDlg" android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="10dp" android:textStyle="bold"></TextView>
    <TextView android:id="@+id/message_progressDlg" android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="10dp"></TextView>

LogCat:

04-06 14:54:29.087: ERROR/AndroidRuntime(379): Caused by: java.lang.NullPointerException
04-06 14:54:29.087: ERROR/AndroidRuntime(379):     at orange.android.vpn.LoginDialog.init(LoginDialog.java:88) ***// THIS IS mProgTitle.setText("Hello");***
04-06 14:54:29.087: ERROR/AndroidRuntime(379):     at orange.android.vpn.LoginDialog.<init>(LoginDialog.java:50)  ***// THIS IS CALLING init() FROM CONSTRUCTOR***

Может ли кто-нибудь помочь мне узнать, почему я получаю этот NullPointerException в init() при доступе к mProgTitle и/или mProgMessage. Любая помощь приветствуется.

Спасибо

Теги:
textview
nullpointerexception
dialog

1 ответ

2
Лучший ответ
mProgressDlg.setContentView(R.layout.progress_dialog);

    mProgTitle = (TextView) findViewById(R.id.titleText_progressDlg);

должен быть

 mProgressDlg.setContentView(R.layout.progress_dialog);

    mProgTitle = (TextView) mProgressDlg.findViewById(R.id.titleText_progressDlg);

потому что вы получаете доступ к компонентам в макете диалога. просто findViewById используется как функция в активности, потому что вы: с помощью setContentView ({layout}) вы устанавливаете макет деятельности и получаете доступ к компонентам с помощью findViewById, то же самое для диалогового окна вы вводите dialog.setContentView и получаете доступ к компонентам samo diloag.findViewById

  • 0
    Благодарю вас. Хм, я не понял этого. У меня сложилось впечатление, что если мы сможем увидеть список всех идентификаторов, то он должен быть доступен где угодно, в любом случае. Благодарю.
  • 0
    Могу ли я показать вращение ProgressDialog в моем диалоге?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню