Проблема с вызовом setMessage() в ProgressDialog

#java #android #eclipse

#java #Android #eclipse

Вопрос:

У меня возникла проблема с созданием ProgressDialog в моем методе onCreateDialog(). Код выглядит следующим образом:

 Dialog dialog;
switch(id){
    case CONNECTING:
        dialog = new ProgressDialog(this);
        dialog.setMessage("Connecting").setTitle("");
        return dialog;
  

Eclipse выдает мне ошибку setMessage не будет допустимым методом типа ProgressDialog, хотя я ожидаю, что он будет там, поскольку в документации для API8 (которую я использую) так сказано.
AFAIK создание экземпляра должно быть возможным, поскольку ProgressDialog выводится из диалогового окна, верно?

Может ли кто-нибудь помочь мне в этом? Это действительно странно.

Ответ №1:

Вам нужно изменить свой код на:

 Dialog dialog;
switch(id){
    case CONNECTING:
        dialog = new ProgressDialog(this);
        ((ProgressDialog)dialog).setMessage("Connecting");
        dialog.setTitle("");
        return dialog;
  

Аллитеративно, вы можете изменить диалоговое окно на тип ProgresssDialog, если вы всегда возвращаете ProgresssDialog, но я сомневаюсь в этом.

Комментарии:

1. хорошо, это немного взлом, но работает… Спасибо. Как вы думаете, стоит ли сообщать об ошибке для этого, поскольку так не должно быть, не так ли?

2. Это не ошибка. Вы обращаетесь к методу расширенного класса Dialog. Вы делаете разные вещи с объектом типа Dialog, поэтому, если вы используете ProgressDialog в одном из этих случаев, вам нужно указать ему обрабатывать dialog как тип ProgresssDialog, а не Dialog. Имеет смысл?

3. ну да, но, например, я могу вызывать методы ArrayList<>, даже когда я объявил атрибут как список<>

4. @JulianKessel Нет, если List это не поддерживает. Попробуйте вызвать trimToSize List

Ответ №2:

Проблема в том, что Dialog у него нет метода setMessage. Какой тип диалогового окна переменной.

Редактировать: эта строка:

 dialog.setMessage("Connecting").setTitle("");
  

Также выглядит неправильно, поскольку setMessage() возвращает void .

Комментарии:

1. Вы не ответили на вопрос. У ProgressDialog есть метод setMessage()( developer.android.com/reference/android/app /… ). Однако вы были правы в том, что setMessage возвращает void .

2. @Spencer Да, но диалог не работает. Переменная dialog имеет тип Dialog, который не имеет метода setMessage.