Проработал по новой уроки по аутентификации. В итоге сделал ретрофит обджектом - один на весь проект, а токен передавал через сейфаргс. Уроки просто 10 из 10. У Сергея кроме программистского есть еще и гуманитарный талант очень внятно и последовательно доносить информацию.
Спасибо большое за урок.!!! Однако, когда вы дошли до ProductFragmenta то логика набрасывания кода перестала быть понятной. Я задам пару вопросов для понимания. 1.Функция private fun initRcView() = with(binding) { - нужна для удобства вызова ее в нужном месте фрагмента? Потому как в MainActivity мы просто код написали для этого? 2. Когда вы убрали this в этой строке rcView.layoutManager = LinearLayoutManager(context) и вместо него написали context , как вообще можно понять, что надо было вписать именно это? Т.к. у меня при удалении this вообще ничего не подсвечивало, чтобы можно было понять, что туда вписать? 3. Возможно я ошибаюсь, но я слышал что private lateinit var не очень хорошая практика. Как по другому можно изменить этот код? И надо ли? Как можно по другому инициализировать адаптер , апи и байндинг? Или я вообще тут кругом не прав? 4.И можно ли еще как то проговорить логику, или очередность создания кода? Почему мы идем таким путем тут а не каким то другим? Ну т.е. я вижу вы пишете какой то новый код, и я не понимаю для чего? Общий смысл вроде и понятен, но нету даже какого то интуитивного понимания, что вот тут мы должны вызвать это, а вот тут это, потому что это идет раньше чем это. Извините, у меня мало опыта и возможно это крайне глупые вопросы, но возможно не только мне неочевидны эти вещи. 5. Если я правильно понимаю, то private fun auth(authRequest: AuthRequest) , private fun initRetrofit(), private fun initRcView() = with(binding) { - можно вынести в отдельный класс для удобства вызова ? Ну т.е отдельно в классах это прописать и оттуда вызывать?
Скажите, почему initRetofit производится для каждого фрагмента отдельно? не проще ли эту функцию вызывать в активити, которая общая для фрагментов. Или есть какие-то причины для инициализации в каждом отдельном фрагменте? спасибо.
Конечно лучше в Активити, я просто тут особо на это внимание не обращаю. Лучше в его вобще в классе Application чтоб одна инстанция и во фрагментах и в любом Активити. На этих уроках я акцент поставил именно на ретрофите а не на том где его использовать, но ты прав
@@NecoRuChannel спасибо Вам большое! Подскажите, есть ли какие-то способы, чтоб приложение сохраняло видео с моего сервера в офлайн и при отсутствии интернета можно было смотреть? При этом чтоб видео было зашифровано и не отображалось в галерее.
Кажется меня преследует null. В логах проверил, значение лайвдаты на первом фрагменте есть, но при переходе на второй в той же лайвдате лежит налл. Уже час ковыряюсь - бестолку. Чертовщина какая-то. Удаляю весь проект и делаю по новой)
а как произвести авторизацию на устройстве? Ну т.е. создается приложение для устройства, разработанное сторонним производителем. Как быть в этом случае? Принцип остается тот же? или есть какие-то отличия? Буду благодарен хотя бы на указание направления куда копать. Проблема в том что у меня есть скрипт авторизации на питоне и он работает, но когда переношу на котлин всегда приходит ответ 401.
Это зависит от API простыми словами с андроид ты отправляешь запрос на авторизацию с логином и паролем а вот как это обрабатывает сервер это зависит от скрипта на сервере, по этому тебе нужно знать как отправлять запрос для определенного сервера или если это твой сервер знать как обработать запрос и отправить ответ
@@NecoRuChannel вы уж извините если глупо изъясняюсь, в андроиде полный новичек. У меня есть скрипт написанный мной на пайтоне, в нем есть авторизация и все работает прекрасно, т.е. я заеускаю скрипт, авторизация происходит корректно (в моем случае на роутере), далее посредствам меню я отправлю роутеру нужные мне комманды и получаю соответствующие ответы о выполнении команд, но это все на компе. Хотел сделать простое приложение на андроид для телефона, да не тут то было, когда пытаюсь авторизоваться на роутере то всегда получаю ответ 401 код заместо 200.
Хоть и быстро объясняете все с одного раза понятно. Спасибо!
Большое спасибо за урок, подробно объясняете!
Спасибо большое. Будем дома, посмотрим.
Проработал по новой уроки по аутентификации. В итоге сделал ретрофит обджектом - один на весь проект, а токен передавал через сейфаргс.
Уроки просто 10 из 10. У Сергея кроме программистского есть еще и гуманитарный талант очень внятно и последовательно доносить информацию.
Только это не по солиду и в этом даже нет смысла
Большое спасибо за видео!
Спасибо за доступный и понятный урок !
Спасибо за урок
Благодарю за урок
Отличный урок! Огромное спасибо
все понятно, благодарю!
Спасибо, отличный урок. Но очень не хватает примера использования ретрофита одного на все фрагменты, без инициализации в каждом
Спасибо вам большое😭😭😭
Очень хотелось бы еще урок по Paging3
Спасибо большое за урок.!!! Однако, когда вы дошли до ProductFragmenta то логика набрасывания кода перестала быть понятной. Я задам пару вопросов для понимания. 1.Функция private fun initRcView() = with(binding) { - нужна для удобства вызова ее в нужном месте фрагмента? Потому как в MainActivity мы просто код написали для этого?
2. Когда вы убрали this в этой строке rcView.layoutManager = LinearLayoutManager(context) и вместо него написали context , как вообще можно понять, что надо было вписать именно это? Т.к. у меня при удалении this вообще ничего не подсвечивало, чтобы можно было понять, что туда вписать?
3. Возможно я ошибаюсь, но я слышал что private lateinit var не очень хорошая практика. Как по другому можно изменить этот код? И надо ли? Как можно по другому инициализировать адаптер , апи и байндинг? Или я вообще тут кругом не прав?
4.И можно ли еще как то проговорить логику, или очередность создания кода? Почему мы идем таким путем тут а не каким то другим? Ну т.е. я вижу вы пишете какой то новый код, и я не понимаю для чего? Общий смысл вроде и понятен, но нету даже какого то интуитивного понимания, что вот тут мы должны вызвать это, а вот тут это, потому что это идет раньше чем это. Извините, у меня мало опыта и возможно это крайне глупые вопросы, но возможно не только мне неочевидны эти вещи.
5. Если я правильно понимаю, то private fun auth(authRequest: AuthRequest) , private fun initRetrofit(), private fun initRcView() = with(binding) { - можно вынести в отдельный класс для удобства вызова ? Ну т.е отдельно в классах это прописать и оттуда вызывать?
Ответ: Чтобы жизнь медом не казалась
💥💥💥💥💥
Top content
Скажите, почему initRetofit производится для каждого фрагмента отдельно? не проще ли эту функцию вызывать в активити, которая общая для фрагментов. Или есть какие-то причины для инициализации в каждом отдельном фрагменте? спасибо.
Конечно лучше в Активити, я просто тут особо на это внимание не обращаю. Лучше в его вобще в классе Application чтоб одна инстанция и во фрагментах и в любом Активити. На этих уроках я акцент поставил именно на ретрофите а не на том где его использовать, но ты прав
🧨
не планируются уроки по многомодульной теме?) сейчас без этого никак)
Привет! Какие уроки планируешь выпускать в будущем?
по блютуз еще нужно доделать, после Dagger и использование камеры, обработка изображений, карты и.т.д
@@NecoRuChannel спасибо Вам большое!
Подскажите, есть ли какие-то способы, чтоб приложение сохраняло видео с моего сервера в офлайн и при отсутствии интернета можно было смотреть? При этом чтоб видео было зашифровано и не отображалось в галерее.
а Вы кстати в Испании живете?
Сергей, привет!
А будут ли уроки, про встраивание кода C/C++ в приложение на Android? Я вроде спрашивал уже, не помню уж😅
Привет, нет, така как у меня канал про разработку приложений на Котлин. Это нативная разработка
Кажется меня преследует null.
В логах проверил, значение лайвдаты на первом фрагменте есть, но при переходе на второй в той же лайвдате лежит налл. Уже час ковыряюсь - бестолку. Чертовщина какая-то.
Удаляю весь проект и делаю по новой)
Observe делал после жизненного цикла в LiveData , потому что без него она не будет видеть изменения
а как произвести авторизацию на устройстве? Ну т.е. создается приложение для устройства, разработанное сторонним производителем. Как быть в этом случае? Принцип остается тот же? или есть какие-то отличия? Буду благодарен хотя бы на указание направления куда копать. Проблема в том что у меня есть скрипт авторизации на питоне и он работает, но когда переношу на котлин всегда приходит ответ 401.
Это зависит от API простыми словами с андроид ты отправляешь запрос на авторизацию с логином и паролем а вот как это обрабатывает сервер это зависит от скрипта на сервере, по этому тебе нужно знать как отправлять запрос для определенного сервера или если это твой сервер знать как обработать запрос и отправить ответ
@@NecoRuChannel вы уж извините если глупо изъясняюсь, в андроиде полный новичек. У меня есть скрипт написанный мной на пайтоне, в нем есть авторизация и все работает прекрасно, т.е. я заеускаю скрипт, авторизация происходит корректно (в моем случае на роутере), далее посредствам меню я отправлю роутеру нужные мне комманды и получаю соответствующие ответы о выполнении команд, но это все на компе. Хотел сделать простое приложение на андроид для телефона, да не тут то было, когда пытаюсь авторизоваться на роутере то всегда получаю ответ 401 код заместо 200.
val a = LayoutInflater.from(this).inflate(R.layout.dialog,null)
val b = AlertDialog.Builder(this).setView(a).setTitle("Авторизация")
val c = b.show()