Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518

Перегрузка OnCreate

12.09.2016, 01:09. Показов 2220. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Гуру ООП, помогите исправить "конфликт"

Написал свой класс-предок для активити(MyActivity), где в onCreate добавил несколько дополнительных полей для работы с XML и с обработкой ошибки. От него наследую мои "рабочие" активити.

MyActivity наследуется от FragmentActivity
Java
1
2
3
4
    public void onCreate(Bundle savedInstanceState, String err_id, int ContextView_id) {
       super.onCreate(savedInstanceState);
       // дальше мои "доработки"
    }
В рабочем активити делаю так:
Java
1
2
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState, "Error_3924829", R.layout.frm_main);
(так удобнее)

В результате все работает, но в Студии строка public void onCreate(Bundle savedInstanceState) { светится ошибкой!
Среди предложений можно перед public void onCreate(Bundle savedInstanceState) { поставить @SuppressLint("MissingSuperCall")
тогда красный гаснет, но это... подозрительно что-ли... Не знаю как оно поведет себя в разных версиях SDK.

Кто знает, можно ли убрать ошибку еще на уровне предка?
Что означает/делает @SuppressLint("MissingSuperCall")?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.09.2016, 01:09
Ответы с готовыми решениями:

NullPointer в OnCreate
Наверное типичный вопрос, но вылетает ошибка в: Caused by: java.lang.NullPointerException ...

Вызов метода в onCreate()
Здравствуйте.Пытаюсь загружать сохраненные данные при старте приложения и сохранять при выходе с помощью Preferences. Добавлял написанные...

OnCreate вызывается дважды
Добрый день. Делаю простое приложение, которое при нажатии на кнопку, с помощью Intent должно переходить на следующее активити. Но проблема...

10
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
12.09.2016, 01:27
Лучший ответ Сообщение было отмечено Tester64 как решение

Решение

Правильно, onCreate(Bundle) обязан вызвать super.onCreate(Bundle).
А он вызывает какой-то левый
onCreate(Bundle, String, int)
поэтому предупреждение

нафига вообще было перегружать onCreate()? лучше сделать свой метод со своим именем и туда разместить "доработки". и вызывать его без "super". (super и сейчас писать не обязательно - т.к. этот метод не переопределяется, а перегружается).

Совпадение имени только сбивает с толку. Фактически этот метод к оригинальному onCreate никакого отношения не имеет.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
12.09.2016, 01:34  [ТС]
Цитата Сообщение от Lumber Посмотреть сообщение
Совпадение имени только сбивает с толку
как раз в имени дело... оно привычное, его тяжело "потерять"... Но Вы наверное правы... попробую сделать некое init(,,) в котором буду вызывать предок с параметрами...

может все-таки можно стандартное перекрыть? ведь РАБОТАЕТ! просто РЕДАКТОР предупреждает об ошибке, но компилятор этой ошибки не замечает...
0
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
12.09.2016, 01:45
можно в MyActivity сделать абстрактные геттеры для параметров "Error_3924829" и R.layout.frm_main
и тогда в наследниках их нужно будет обязательно реализовать и соответственно эти значения не потеряются.

а init() вызывать из onCreate(Bundle) в MyActivity.
а onCreate в наследниках реализовывать стандартным образом.

Тогда невозможно будет забыть вызвать init() и невозможно будет забыть предоставить значения для него.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
12.09.2016, 02:28  [ТС]
Цитата Сообщение от Lumber Посмотреть сообщение
Тогда невозможно будет забыть вызвать init()
Сделал проще!
в предке перед public void onCreate(Bundle savedInstanceState) { поставил @Deprecated - это ЗАЧЕРКИВАЕТ все мои "стандартные" onCreate
сделал protected void _init(Bundle savedInstanceState, String err_title, int ContextView_id){
который "якрко" виден в списке благодаря "_" и в котором реализую всю мою старую начинку onCreate
0
 Аватар для OlegJV
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
12.09.2016, 03:36
Вообще-то @Deprecated обозначает, что когда-нибудь это перестанет работать. Или я не прав?
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
12.09.2016, 04:25  [ТС]
Цитата Сообщение от OlegJV Посмотреть сообщение
Вообще-то @Deprecated обозначает, что когда-нибудь это перестанет работать. Или я не прав?
Так оно и есть! Поэтому система ПРЕДУПРЕЖДАЕТ программиста наглядно зачеркивая эту функцию когда я ее использую! В том числе и в боковом списке методов! Тяжело ошибиться и начать переопределять этот метод и проще вспомнить что вместо onCreate( надо переопределить _init(
0
 Аватар для OlegJV
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
12.09.2016, 04:30
Так а зачем писать то, что потом не будет работать? Абстрактный init имхо лучше...
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
12.09.2016, 05:24  [ТС]
Цитата Сообщение от OlegJV Посмотреть сообщение
Так а зачем писать то, что потом не будет работать? Абстрактный init имхо лучше...
Ты не прочитал пост выше??? Попробуй сам приписать ЛЮБОМУ методу @Deprecated и посмотри как поведет себя СТУДИЯ! На производительность это не влияет! А я и так использую init! просто есть старые активити в нескольких проектах(один myActitity.java использую во всех проектах), которые надо перебрать и исправить - так оно куда удобнее!
0
 Аватар для OlegJV
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
12.09.2016, 05:32
Извиняюсь, не сразу понял смысл. Но все равно способ, мягко говоря, сомнительный по моему мнению. Он-то рабочий. Но сомнительный.
P.S: Мозг уже не соображает, я тут полночи бился с неработающим датчиком освещенности. Только что выяснил - в используемом телефоне нет этого датчика )))))
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
12.09.2016, 06:14  [ТС]

Не по теме:

Цитата Сообщение от OlegJV Посмотреть сообщение
я тут полночи бился
аналогично! :) я сегодня поисправлял все конфликты которые БЕСИЛИ уже несколько месяцев в нескольких проектах и добавил еще несколько функций в собственную ORM


попробую еще раз! есть КУЧА активити, в которых используется МОЙ предок для активити. У всех много кода в onCreate. Надо ВСЕХ переписать. Благодаря @Deprecated в предке у onCreate я СРАЗУ вижу какое активити надо переписать/перебрать (стоит его открыть) - студия явно показывает ошибку в списке методов и в коде!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.09.2016, 06:14
Помогаю со студенческими работами здесь

viewPager onCreate method
Всем здрасьте, возник следующий вопрос по ViewPager: Создаю viewPager и заполняю его в методе OnCreate главной активити: ...

Подскажите - программа вылетает в OnCreate
Я действительно совершенно безпонятия от чего она это делает! Программа вылетает на super.onCreate(savedInstanceState); Вот лог ошибки: ...

Программа вылетает в методе OnCreate
Программа вылетает со следующей ошибкой: 586-3586/spsoft.myapplication E/AndroidRuntime: FATAL EXCEPTION: main ...

Не передаются данные между onCreate и onResume
Значение переменной изменяется после загрузки. НО! В onCreate есть TextView который использует это значение. Но судя по размеру текста, оно...

Один объект класса в onCreate и onClick
Здравствуйте! Описал класс, реально ли, чтобы один метод класса выполнялся в onCreate, а другой в onClick? Т.к. сейчас создавая объект у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru