#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.