Это копия, сохраненная 14 июля 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
> Хочу вкатиться в разработку под Android! С чего начать?
Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно установить Android Studio, открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> Мануалы?
- Официальная документация: http://developer.android.com/
- Полезный гайд для начинающих и продвинутых: http://guides.thecodepath.com/android
- Бесплатный видеокурс от Google для новичков: https://www.udacity.com/course/android-development-for-beginners--ud837
- Два ресурса, единственный плюс которых — русский язык: http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
- Классика, способная дать ответ на почти любой вопрос "Как сделать xyz?": http://stackoverflow.com/
> Не хочу писать на Java!
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. С 17 мая поддерживается официально.
> Есть что-то кроме нативных приложений на Java/Kotlin?
- Qt — кросс-платформенный фреймворк на C++. Используется в основном для игры и для приложений с высокими требованиями к производительности (обработка изображений, звука, ГИС-системы). Спрашивать в C++ треде.
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
- PhoneGap/Ionic/Titanium/ReactNative — имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.
> Хочу писать игры!
LibGDX или Unity. Спрашивать в /gd/.
> Что нужно, чтобы взяли джуниором? Что учить в первую очередь?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library, shared preferences, SQLite), знание популярных библиотек типа Retrofit + Glide/Picasso. И хотя бы одно готовое приложение.
Предыдущий тред: https://arhivach.org/thread/349354/
Использую либу с гитхаба socket.io, https://github.com/socketio/socket.io-client-java
Мне нужно подключиться к серверу на сокетайо по определенному урлу, включающему querystring с юзертокеном. Ридми говорит, что нужно делать так:
IO.Options opts = new IO.Options();
opts.forceNew = true;
opts.query = "auth_token=" + authToken;
Socket socket = IO.socket(hostURL, opts);
Однако когда я в opts кладу query, вся конструкция наебывается к херам. Не валит эксепшн, нихуя, просто перестает коннектиться, даже не срабатывает событие connect. Без query всё окей.
Судя по тому что ни в issues репы, ни на стаковерфлоу, никто не поднимал данный вопрос - проблема это персонально моя. Может кто скинет пример реально рабочего кода с подключением к сокетайо-серверу с передачей параметров?
репост с тонущего
Я работал с этим дерьмом.
Абсолютно не прозрачное плохо документирвоанное говно. От Object... меня вообще блевать тянет. Бер и копайся бля есть там что или нет, JSONObject или Exception какой-нибудь нахуй.
С котлином надеюсь разберешься, потому что ебал переписвать на джаву.
https://pastebin.com/GFvZDrx6
Охуенно обрезал самый важный кусок.
Подозреваю что ты где-то передаешь null по цепочке, RxJava2 за такое убивает нахуй.
Ах да, еще проверь своего бекендщика на вшивость, а то мой слал/принимал голый jsовский json, из ебаного веба в ебаную ноду же.
Поскольку js не типизирован, то отправить через socket.io можно было все что угодно, в итоге слались не сериализованные объекты. И когда я слал нормальный тектсовый жсон, то получал фигу.
Я непривльно выразился.
Ведро-тян к вашим услугам.
Если этот код обратно вернуть в фрагмент, то все работает.
Возможно у меня дебильно сделано обращение к методу, который вызываю из фрагмента, так называемый setWebmData.
>pastebin
Спасибо, покопаюсь
>проверь своего бекендщика на вшивость
Да веб-клиент без проблем заработал, не в этом дело
Цель: вынести методы которые отвечают за запросы из сети например, fetchWebmDetails()
Нет, я не прошу сделать все за меня, прошу совета о реализации. Сам пробовал создать отдельный класс, в который переносил вышеупомянутый метод, но столкнулся с рядом проблем.
Проблемы такого плана. Не могу правильно обратиться к методам setWebmData и setTagsAdapter, соответственно и в обратную сторону, не мог правильно вызвать метод fetchWebmDetails из RandomFragment.
В общем, как сделать или что изучить дабы разобраться с этим. У меня постоянно с этой темой проблемы и поэтому все писал в одном классе активности или фрагмента, что не есть хорошо в плане ООП и SOLID.
Так в том то и дело, что в моей ситуации тоже с вебом все было ок, а то что я слал сервер не понимал. Когда я указал на проблему и бекендщик поправил как надо - в вебе тоже немного правок внесли (просто слали не прямо объект, а stringify'цированое представление)
Эта хуйня по дефолту тащит все .proto в jar. Как это говно отключить?
Ты уверен что хочешь это отключить? Не просто ж так наверняка.
Ну вот вроде https://github.com/google/protobuf-gradle-plugin/issues/108
>Ты уверен что хочешь это отключить? Не просто ж так наверняка.
Да, хочу. Честно говоря я не ебу нахуя оно вообще сделано, ибо generated кода более чем достаточно.
>Ну вот вроде https://github.com/google/protobuf-gradle-plugin/issues/108
Да, оно. Спасибо, анончик.
В сторону FastAdapter копни.
Продолжение. Поскольку все промолчали (70 раз просмотрели ссылку с кодом) пришлось делать по своему.
Создал интерфейс и отдельный класс WebmDetailsFetcher чтобы в нем написать метод fetchWebmDetails(). Для инициализации интерфейса создал конструктор в классе WebmDetailsFetcher. Затем в onCreate методе инициализирую тот самый конструктор. Передаю аргументы в setWebmDetails и получаю ожидаемый результат. Пока все работает без проблем, но не является ли это изъебством и можно было сделать куда проще и красивее? Ссылка: https://pastebin.com/bkcrD83M
User, Order, Order, User, Order, Order, Order и так далее. т.е. первый юзер имеет два заказа, второй - три заказа и т.д.
Теперь я запихнул иконку searchView, но проблема в том, что у меня ArrayList содержит в себе их общего родителя, который не имеет метода getUser и getOrder. Как мне запилить этот поиск?
Какой у тебя уровень знаний? Если коротко то нужно знать все что нужно для шлепания CRUDов.
Только что узнал, что equalTo() ищет строку полностью включающую строку указанную в аргументе. Получается это не альтернатива like из sql
В таком случае я в полной растерянности и не знаю как поступить
Ха-ха, лох. Тебе говорили, бери SQL и не выебывайся, нет, хочу жрать зависимость от гугла.
Ну, теперь ты вообще ничего подгружать пользователю не будешь.
Тогда хватит. Верстка + нетворкинг это если по бомжацки. Что бы норм надо еще db, но не сильно, с SQLite не разгонишься.
Both.
Так если ты со сервака удаляешь, просто обнови инфу ресуклера. Т.е. можно присобачить спинер как при обновлении новостей впараше.
Все ж мы люди!
Имбицил с вебмками молодец и изучает разработку работая над интересным ему проектом, а не над очередным тудулистом и веазер апп из онлайн курсов.
> а не над очередным тудулистом и веазер апп из онлайн курсов.
Жиза. Как себя бы не заставлял тогда, все равно блевать хотелось от просмотра кода из туду.
Спасибо, анон. Насколько я понял, приложение, через которое пользователь в первый раз аутентифицировался, просто пихает логин+пароль в Account Manager и потом остальные приложения вытаскивают логин+пароль из Account Manager'а?
Есть ли такая штука, чтобы я отправлял логин+пароль сервису аутентификации, который бы выдавал какой-нибудь подписанный пропуск, который я буду показывать при обращении к своим сервисам?
какая на пике кобыла бе.
с виду конечно не оч встратая, но по мне не оч, КОБЫЛА одним словом
это трап же ну
Ну вот мне надо rss ленту как бы, и один хер это не влияет на суть вопроса.
Мне либо коннекшон передавать вместе с инпут стримом в парсер, либо сначала всё прочитать из стрима куда-нибудь, и передать это в парсер. Второе явно лучше, но я не знаю как принято делать.
мимо сижу полгода на реакт нейтиве
>нопками merge и rebase, я нажал на вторую кнопку и все распидорасило в моем локальном проекте. Пропали все папки с джава классами и прочее. Иконки изменились на другие.
АХХААХАХХАХАх
Сук) Проиграл.
Я тоже так делал. В общем, по методу тыка нашел следующий рецепт для себя: Есть девелоп, создаю ветку новую, хуярю код там, потом переключаюсь опять на девелом, нажимаем волшебную кнопку MERGE, сливаем наши изменения в девелоп и мерджим конфликты.
Хз, может поможет.
А вообще, тебе лучше опять скачать проект, чтобы хуйней не страдать и применять мои рецепты.
Тоже проиграл, тоже так познавал, только не кнопками, а в консоли, копируя команды со stackoverflow.
Почему при присвоении значения фона ConstraintLayout, меняется фон у всех элементов? То есть, по уроку если делать, такого быть не должно, но окрашивается весь контейнер, включая кнопки.
Через Oauth
Нет, меняется фон только у лейаута. Смотри в сторону бекграунда кнопок.
>Нуб в андроиде.
Это непоправимо.
>Делаю урок по сайту Климова (Светофор, день 4ый)
Нахуй Климова, хоть котики у него есть, но все равно нахуй. Ебашь юдасити, я знаю, что я говорю. Ты получешь невъебенные 6-7 курсов суммарностью 200 видосов.
А на вопрос отвечать не буду, пока юдасити не пройдешь. Троль.
Выключил включил студию все вернулось на места свои.
E/RecyclerView: No adapter attached; skipping layout
E/MultiWindowProxy: getServiceInstance failed!
Просто пиздец. Сука. Отлаживаю через тосты. Дожил.
Если у тебя показываются только ошибки, значит Log level у тебя стоит Error. Если ты свои логи через Log.d() пишешь, значит тебе нужно поставить Log level: Debug. И убедись, что строка поиска и фильтры у тебя пустые.
Нет, у меня что-то вроде этого.
Подозреваю, что пиздец в самом проекте. Но это только у меня, у другого чела работает.
Но у меня и дома не работает. Загадка.
К слову, здесь должно быть 100 строчек от логов. Раньше было, сейчас же нет.
Спасибо за совет про Удасити, как раз собирался смотреть. А с такой рекомендацией уж тем более побегу.
Bump
хз, попробуй все заглушки отключить: debug -> verbose, filter -> no filters, а в строке поиска, если надо, можно просто прописать имя пакета
орнул с тостов
У меня есть три ресайклера, которые должны наполняться тремя парсерами (у них различаются только ссылки).
Взаимодействие с сетью сделал по примеру через NetworkFragment со вложенным DownloadTask, который отправляет ответы в хостующую активити коллбеком.
Как мне утроить эту хунту? Сначала думал создать три фрагмента, но потом понял что хуета. Потом попробовал передать во фрагмент лист из ссылок, чтобы он мне три таска вызвал, но тоже хуета, у фрагмента аргументы каким-то странным способом устанавливаются и кажется нет способа передать лист. Думал ещё коллбеку три метода добавить, но это уже вообще дико
Как это делается?
создал public class Application extends android.app.Application , манифесте <meta-data
android:name="com.vk.sdk.AppId"
android:value="000000" />вроде все как надо, но все ровно ругается >String <integer name="com_vk_sdk_AppId">your_app_id</integer> did not find in your resources.xml
все решил
Непонятно. Если хочешь данные с сервера получать по разным ссылкам - сделай три метода от ретрофита и дальше пляши от этого.
Кто игрался с ними? Расскажите как ощущения.
Он реакта чот блеванул. Тулинг какой-то пиздец ебанутый для меня. Какие-то пляски с нпмом старой версии, подкачивания какой-то хуйни и тд. А ну и жс, может с каким-то врапером типа тайпскрипта оно лучше, но не зашло. Флаттер не тыкал.
Ну ты бы еще фейсбучными либами на полном серьезе пользовался типа фреско и литсо.
Ну я фреско только юзал на минималках, без углублений в детали.
Хотя мне почему-то дарт получше читать, в отличии от того же жс, чего у последнего 60к звезд на гитхабе. Сложно все-таки натив выбирать, все-таки продолжу писать на джаве и буду ждать книжку от хед фест про котлин.
Анон, посоветуй плез годный демо по Clean Architecture + MVP
Сейчас ковыряю это
https://github.com/android10/Android-CleanArchitecture
Но эта демка говно - state презентера не сохраняется нихуя и при определенном сценарии вообще с NPE падает все нахуй.
Почему?
Благодарю.
Загадку про два стула.
Если у тебя две библиотеки со схожим функционалом, то ты дурачок.
Убирай все вообще нахуй, либо оставляй рхбиндинг.
https://antonioleiva.com/kotlin-android-extensions/
Тем более ты можешь это делать постепенно.
ExoPlayer'у можно скормить вообще все, главное напиши реализацию DataSource из трех методов.
Забиваю гитхаб хуетой. (Такой хуетой что аж стыдно себе) но активность капает 1000+ коммитов уже захуярил дебил.
Купил гугл плей. Залил туда одно говнище. Находятся дебилы которые даже устанавливают.
Собственно вопрос сколько по хорошему нужно запилить прог на гугл плей чтоб вкатываться в джуниор и было не стыдно за себя??
Есть ли смысл гнаться за количеством? Сделать 10-ток толковых (блокнотик, to-do шечка, таймер будильник, читалка твитеров и т.д.)
Или прям хуярить и хуярить чтоб штук 50-100 всяких крестиков ноликов, пятнашек, змеек, хуеек и прочего.
Нет я другой аутист
Ты рофлишь что ли?
Они еще даже переворот экрана не пофиксили, КАРЛ.
Идет уже 2137 год, даже сами разрабы флаттера хуй забивают на дискуссии молодых людей в issues на гитхабе.
Хотя было бы интересно почитать краткий экскурс и по другому нативному говну, но мало кто интересуется этим.
Да и еще альфа версия.
Если сделают как на иосе, только с дартом, было бы замечательно. Наверное.
> Они еще даже переворот экрана не пофиксили
Так это и в Андроиде не пофиксили и не пофиксят уже никогда.
>Ну так с этим уже вроде каждая собака умеет бороться.
Ой блять, не начинай. Я не хочу даже думать об этом.
А если еще вспомнить фрагменты и ТО, как ГУГЛ КАЖДЫЙ МАЙ говорит, что ФРАГМЕНТЫ ЗАЕБИСЬ - да идите вы нахуй.
>фрагменты
:)
Да ну нахуй. Нове гугловские архитектурыне компоненты меня тоже не впечатляют. Я ебашу single activity с кондуктором.
Зачем ставить на паузу? Можешь глянуть https://github.com/NYTimes/Store. У них ConcurrentHashMap держит некоторое время твои обсервэблы и дедуплицирует одинаковые запросы.
И можешь оставлять свои подписки как есть, можно share на обсервблы просто хуйнуть перед тем как они попадают в лайфцайкловые компоненты. (стор так и делает собственно)
А что ты вообще планируешь грузить таким образом, что тебе требуется управление подписками в фоне?
Там все четко и ясно описано.
Сервисы для кого?
А можно не выебываться и сделать на фрагментах. А варианты такие же, что и в принципе без фрагментов обходиться - кондукторы и мотары всякие.
>кондукторы и мотары всякие
Ну согласен, да. Иди что-то вроде таких. Одна либа полностью укомплектована и валяется на гитхабе.
Но в основном нужно было ебаться с бек стеком, а здесь особо и ебаться незачем.
Сначала подумой, прежде чем хуярить в свой проект очередную либу.
> Но в основном нужно было ебаться с бек стеком
Сколько раз слышу это как аргумент против фрагментов, но так и не могу понять, что в этом сложного. Ну ладно там кривые api у камеры или Bluetooth, но тут-то что не так? Что в этом такого сложного?
> Что в этом такого сложного?
Абсолютно уебанская асинхронная ссанина, которая даже с проверками на isPaused умудряется падать в
> Can not perform this action after onSaveInstanceState
Да взять хотя бы тот факт, что фрагменты будут выпилены из фреймворка и останутся только в саппорт либе.
Так хорошо же. Почему это должно быть причиной отказа от них?
Ничего. Это анти-паттерн.
А как реализовано в последней версии приложения YouTube плеера? Разве там фрагменты используются?
>что фрагменты будут выпилены из фреймворка
Вот тоже когда пишу иногда задаюсь вопросом. Всякие action bar, toolbar, постоянно приходится на v4 вниз стрелочкой жмякать.
Это будет чудо, если гугл выпилит все говно и оставит важное в супорт либе. Такому не бывать.
Использую даггер и фабрики где нужно динамические параметры передать.
Анон, посоветуй стэк.
Кароче: у меня есть на PC крутится сервачек на python, который парсит сайты и дампит инфу с разных API в db SQLLite. Другой процесс обрабатывает данные из этой db.
Требуется пересылать результаты аналитики на android app. Какой стек технологий подобрать? Направь анон, ато уже несклько дней не могу подобрать. Поглядел firebase, но так и не понял, подойдет ли это для моих нужд?
Сейчас настроил сокет соединение, которое обслуживается через ddns и сервер получает сообщение от andoid app через интернет, но не наоборот (android app получает дату только находясь в локальной сети).
Короче, на прилажухе должны быть поля, в которые постоянно приходят данные. ПОСТОЯННО. и при условии выбрасывать notification.
Сейчас прибежит вуефорсер и будет советовать всё переписать на node.js и vue, мол, через месяц 300кк/нс будешь получать
а что рили так удобно? дело не в мифических 300ММ/нс, но если будет работать, я уже на все согласен. с js давно знаком, но тесноый дружбы не завязывал, может быть время?
по счет бэкенда не знаю, однажды по дурости поучавствовал в холиваре и понял, что это иррациональная риторика. Но если поможет для моего случая и я не огребу еще большего геморроя, то почему нет
Да, бери firebase push api, смотри, на каких языках для неё есть готовые библиотеки. На джаве точно есть. При обновлении данных отправляй информацию на сервер firebase. На телефоне лови эти пуши, проверяй и делай с ними что хочешь.
Даже если ты раньше ничего такого не делал, но умеешь программировать, то тут работы на пару вечеров. Сервер пиши на чем хочешь из поддерживаемых языков, клиент наивный на Java/Kotlin.
String likedJsonPrefs = prefs.getString(LIKED_ID, null);
String[] likedArrPrefs = gson.fromJson(likedJsonPrefs, String[].class);
???
likedWebmList.addAll(Arrays.asList(likedArrPrefs)); А то при NPE при обращении к методу addAll возникает, пока не сохраню в преференсах строку. Пробовал проверить длину массива (length), то аналогичная проблема. Спасибо.
> а не открывая новый activity
Слишком замудренные предложения. Если по нажатию на кардВью тебе нужно отобразить то, что нужно без активити - юзай фрагменты.
>>69842
> А то при NPE при обращении к методу addAll возникает, пока не сохраню в преференсах строку.
А как ты хочешь? Сразу в гсон.фром в первый параметр пихнуть преференс гет стринг?
То есть, мне все таки придеться открывать новый activity по нажатию на карточку, даже если единственное, что поменялось - это список карточек?
При смене с категории на подкатегорию я могу просто поменять данные и вызвать nortifyDataSetChanged и он перестроится. Но при смене с категории на предметы мне нужно по-другому их отрисовывать.
А, так суть в адаптерах. Нахуй тебе нужен загромажденный адаптер?
Можешь юзать getItemByType или как-то так, в общем, примеров много.
Если только менять вьюшки, то это легко в принципе. но при тапе ты можешь открывать новый фрагмент, где получишь данные и хуйнешь это в свой базисный адаптер, где он и определит эти данные в соответствующий леяут.
> Но при смене с категории на предметы мне нужно по-другому их отрисовывать.
Ну так отрисовывай, хули.
Делаешь интерфейс, в нём вложенные классы. Один класс - один уровень категории. Дальше просто забиваешь свой ресайклер элементами в нужном порядке. Некоторые скрываешь, некоторые нет. Мне кажется, что это может сработать.
Оберни в Optional из Java8.
Пилишь несколько разных вьюхолдеров, оверрайдишь getItemViewType и в методах onCreateViewHolder и onBindViewHolder делаешь свич-кейс when, если ты белый человек и там уже расписываешь свои карточки. И да, никогда не делай notifyDataSetChanged, если изменилось менее 90% датасета, а сам он меньше ~200 элементов. Лучше используй notifyItemRangeChanged, или просто notifyItemChanged.
Вот тебе ответ со стека, там как раз то, что я описал: https://stackoverflow.com/questions/26245139/how-to-create-recyclerview-with-multiple-view-type/26245463#26245463
Блять, ему это уже 3 раза расписали, и ты еще 4 раз пишешь одно и тоже.
Что лучше выбрать между django и firebase? Чтобы с заделом на будущее?
вообще стал копать джанго, потому что хочу поднять на домашнем компе, тем более весь бэкенд критится на питоне. С другой стороны, firebase тема годная и, думаю, понадобится.
> django и firebase
Firebase это весело, когда им пользуешься только ты и твой кот. Потом начинает приходить счет на пару сотен долларов в месяц в там, где можно было обойтись впской за 10 бачей.
хм, тогда может поднять джанго на амазоновском хосте?
Хотел MVP использовать, но во всех примерах структура разная, и я хз какой придерживаться.
Алсо, приложение планируется не маленьким - апи, бд, карты и прочее
Чем тебя MVP не устраивает? Дополни её каким-нибудь интерактором и репозиторием, где распишешь общую бизнес-логику и работу с данными. В презентер вынесешь только логику представления и частную бизнес-логику.
Вообще структуру ты выбираешь сам и строишь её таким образом, чтобы было удобно тебе/твоей команде. Самое главное, чтобы ты не запутался в ней, и было понятно почему и зачем что-то сделано именно так.
>Хотел MVP использовать, но во всех примерах структура разная, и я хз какой придерживаться.
>Алсо, приложение планируется не маленьким - апи, бд, карты и прочее
Нахуй вообще тебе всякие ЭМ ВИ ПИ и тому подобное?
Бери пример с меня, ебашь все сразу. А потом и образуется как-нибудь.
Т.е. ты хочешь сказать, что если меняется весь датасет, то лучше сделать сделать notifyItemChanged для каждого элемента, я правильно понимаю?
Вместо нотифаев лучше вообще юзать DiffUtil, особенно с разными типами итема
А он будет работать, если итемов стало больше/меньше? Мне тогда после обновления датасета делать notifyItemRangeChanged(0, items.size())?
Дано: NavigationDrawerActivity c TabFragment в нём, в котором грузятся фрагменты. Начало моё приложение падать с NPE при попытке изменения TextView после возврата к нему. Ну подумал, что это из-за того, что асинктаск завершается быстрее, чем происходит findviewbyid для вьюхи в onCreateView (он запускается из onCreate - я понимал, что из-за этого могут возникнуть проблемы, но забил). Тем более, что данных приходило меньше на этой неделе чем обычно. Вкратце перекинул старт этого таска в onStart.
NPE перестало появляться, но сломалась пагинация, поэтому я продолжил копать дальше. Раскидал по жизненным событиям логирование, по своим функциям тоже. Вижу, что после возврата в foreground приложения вроде создаются две копии одного и того же фрагмента. Ну копаю дальше, дописываю события, логирую их. Смотрю лог, и что я вижу - эта сука действительно создаёт один инстанс и стартует таск в onCreate, а после стартует ещё один инстанс в onStart, хотя по пикрилу да и по логике такого не должно быть. Андроид благополучно забывает об этом и вспоминает об этом только после того как асинктаск завершается, конечно же вьюха под эти даннеы не создана и вылетает NPE https://pastebin.com/M46qteUA . Сука, ну как можно было ТАК ОБОСРАТЬСЯ!!!
А вообще из-за чего это начало происходить. После возврата в приложение показывался StartFragment, то есть происходил onCreate Activity. Но сука бэкстэк при этом всегда был не пустой!!! И если нажать "Назад", то возвращало к реально последнему состоянию последнего фрагмента перед остановкой приложения. Я сделал проверку на состояние бэкстэка и чтобы этот последний фрагмент грузился после рестарта (через onCreate естественно, с проёбом состояния). После этого начал вылетать NPE.
Блять, ну какие жу всё-таки пидарасы в гугле!
Интересная картинка. теперь я понял как онБекПрессед работает.
Что нужно: чтобы прилажуха отображала цыферки с бекенда на питоне. На примете: django, firebase, пушить файл на ftp и с него забирать. Как проще всего сделать?
и кстати, правда, что сокет не работает через инет вовсе? настроил только с андроида на сервер, но не наоборот.
да пишу. хотелось бы посмотреть на другие варианты. ато не очень хочется побеждать в велотуре
1. Подключаешься по сокету на свой сервер и получаешь данные, показываешь их. Держишь либо это соединение всегда, либо только пока открыто приложение.
2. Получаешь данные по требованию через http и отображаешь их. Добавляешь новые записи через GCM/FCM постепенно.
>Сделай себе белый айпи, в чём проблема?
белый - это статичный? Если да, то я настроил статичный IP через no-ip, ddns, port forwarding. Но это на PC. Андроид все равно не получает данные на сокет. Говорят, что за натом. Плохо понимаю что это и как обойти.
>Получаешь данные по требованию через http и отображаешь их. Добавляешь новые записи через GCM/FCM постепенно.
какие тут endpoints? не знаком с технологией и плохо шарю в сетях. Что начать читать? Ато не представляю как происходит обмен данными. было бы готовое решение - было бы замечательно
Проще, покажи что ты уже сделал. Кто тебе говорит что твой андроид за натом. У тебя андроид уже слушает какой-то сокет и пытается через него получать данные?
на android:
public class MainActivity extends AppCompatActivity {
EditText e1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1 = (EditText)findViewById(R.id.editText);
Thread myThread = new Thread(new MyServerThread());
myThread.start();
}
class MyServerThread implements Runnable
{
Socket s;
ServerSocket ss;
InputStreamReader isr;
BufferedReader bufferedReader;
Handler h = new Handler();
String message;
@Override
public void run() {
try
{
ss = new ServerSocket(7801);
while(true)
{
s = ss.accept();
isr = new InputStreamReader(s.getInputStream());
bufferedReader = new BufferedReader(isr);
message = bufferedReader.readLine();
h.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
}
}catch(IOException e)
{
e.printStackTrace();
}
}
}
public void send(View v)
{
MessageSender messageSender = new MessageSender();
messageSender.execute(e1.getText().toString());
}
}
тут пытаюсь послать на IP телефона:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('myIP', 7801))
s.send(b'Oi you sent something to me \n')
data = s.recv(64)
но ничего не приходит. Еще есть класс MessageSender, который отлично пересылает на сервер через адресс no-ip. Но вот с сервера на androir не приходит. Может myIp (ip смартфона) как-то тоже нужно настроить через no-ip?
на android:
public class MainActivity extends AppCompatActivity {
EditText e1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1 = (EditText)findViewById(R.id.editText);
Thread myThread = new Thread(new MyServerThread());
myThread.start();
}
class MyServerThread implements Runnable
{
Socket s;
ServerSocket ss;
InputStreamReader isr;
BufferedReader bufferedReader;
Handler h = new Handler();
String message;
@Override
public void run() {
try
{
ss = new ServerSocket(7801);
while(true)
{
s = ss.accept();
isr = new InputStreamReader(s.getInputStream());
bufferedReader = new BufferedReader(isr);
message = bufferedReader.readLine();
h.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
}
}catch(IOException e)
{
e.printStackTrace();
}
}
}
public void send(View v)
{
MessageSender messageSender = new MessageSender();
messageSender.execute(e1.getText().toString());
}
}
тут пытаюсь послать на IP телефона:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('myIP', 7801))
s.send(b'Oi you sent something to me \n')
data = s.recv(64)
но ничего не приходит. Еще есть класс MessageSender, который отлично пересылает на сервер через адресс no-ip. Но вот с сервера на androir не приходит. Может myIp (ip смартфона) как-то тоже нужно настроить через no-ip?
Так, абажжи. У тебя в роли сервера выступает телефон, а в роли клиента домашний сервер?
вообще решения этой проблемы передачи на сокет смартфона так и не нашел. Восновном говорят, что телефону это не позволяется не из под рута и провайдеры НАТят Ip смарта
да что проще то и лучше) пока пишу бэкенд на питоне и пушу нотификейшены на андроид через сервис. Но в было бы отлично с помощью несложной технологии прямо с питона слать дату в прилажуху.
Есть пару китайцев к которым хочу собрать Oreo, застрял на шаге сборки проприетарных блобов и не могу понять что мне делать, вроде же их можно как-то из системы моего смартфона вытащить?
https://source.android.com/setup/build/building
Есть у кого-то более детальное объяснение?
>и пушу нотификейшены на андроид через сервис
я так понимаю, речь как раз о GCM/FCM. Это нормально на самом деле.
Просто с клиента (приложение под абдроед) подключайся по сокету к серверу своему. Данные можно слать в обе стороны если что через это подключение. Всё.
> застрял на шаге сборки проприетарных блобов и не могу понять что мне делать
Тебе нужно накатить оригинальную прошивку, подрубить по усб и запустить скрипт, который вытащит из нее все блобы.
На этот раз у меня возникла идея создать нечто, вдохновленное паскалем, го и жабаскриптом — причем даже не язык, а скорее целый инструментарий. Я не могу отогнать столь ужасную мысль просто так, поэтому буду расписывать свой поток сознания в этом треде.
Итак, какова основная цель этого языка, что должно быть основой его философии? Продуктивность. С этого и начну.
> Несколько раз в год меня одолевает уныние от существующих языков и желание создать новый, лучше всех имеющихся
Лучше андроид сдк перепиши, у меня от него уныния еще больше.
Что влияет на продуктивность? На что разработчик тратит время?
1. Написание кода;
2. Написание тестов;
3. Прогон тестов;
4. Ручное тестирование;
5. Дебаг;
6. Рефакторинг;
7. Поиск библиотек;
8. Поиск документации;
9. Чтение кода и документации.
Вероятно, я забыл еще столько же пунктов, но надеюсь, что самые важные я не забыл.
>>71372
Как только придумаю идеальный язык — так сразу же создам идеальный сдк под все платформы, под небо и под аллаха.
1. Написание кода.
Что мешает писать код легко и быстро? Я вижу три проблемы: бойлерплейт, ритуалы и парадокс выбора.
С бойлерплейтом все понятно — если языку не хватает выразительности, то приходится писать много повторяющегося кода. Нужны метаинтструменты хотя бы в виде ФВП.
Ритуалы — например, излишне строгая система типов заставляет переписывать код, который мог бы и работать. Больше всего с такой проблемой я успел столкнуться в PureScript — ошибка "Skolem type variable bound by temp has escaped" во всех тех случаях являлась серьезной с точки зрения системы эффектов, но не имела никакого значения для рантайма. Видеть такую ошибку в языке, ориентированном на корректность, вполне нормально, но для продуктивности этого лучше избегать.
Парадокс выбора — при возможности писать слишком умный и слишком разный код теряется время на размышления о лучшем подходе. Лучше, чтобы язык склонял к написанию как можно более тупого кода, оставляя кривые лазейки для умных решений.
>>71383
Котлин хорош, но для меня он ощущается как нечто слишком знакомое, а потому не восхищающее.
>Котлин хорош, но для меня он ощущается как нечто слишком знакомое, а потому не восхищающее.
Если и ебашить язык, то поверх котлина.
Ты все равно не осилишь.
2. Написание тестов;
Тестирование обычно является епархией библиотек, а не самого языка. Но я-то вижу в своих влажных мечтах идеальный инструментарий, а для идеальности дизайн самого языка должен учитывать потребность в тестировании.
Как упростить написание тестов? Например, можно ввести поддержку докстрингов с примерами вызова функции, как это сделано в эликсире. Полноценным тестированием это не является, но иметь пару гарантированно рабочих примеров будет полезно.
Дополнительно, нужны метаинструменты для создания моков и стабов.
3. Прогон тестов;
Пожалуй, к дизайну языка это отношения не имеет, но реализация должна делать доступной граф зависимостей, чтобы тестовая система знала, какие тесты нужно запускать и не тратила лишнего времени.
4. Ручное тестирование
Как можно тестировать вручную? Один из вариантов — запускать все приложение и смотреть на результат. Другой вариант — запускать репл, импортировать функцию и играться с ней.
В обоих случаях желательно минимизировать время компиляции/интерпретации и количество пересобираемых компонентов. Нужна простая грамматика, подобная паскалю, чтобы токенизация и построение AST происходили за миллисекунды даже на больших приложениях. Нужна быстрая на старте VM — монстры вроде JVM и V8 слишком медленные, куда лучше ориентироваться на LuaVM (и может быть MoarVM).
Более того, вместо традиционного компилятора лучше иметь компилирующий сервер, который будет отслеживать все изменения и пересобирать нужные части без лишних указаний. Этот же сервер может реализовать LSP для поддержки языка редакторами.
>>71393
>Если и ебашить язык, то поверх котлина.
Я пытаюсь задизайнить язык, преследующий определенную цель, а не просто склонировать чей-то синтаксис и идеи. Зачем мне брать за основу котлин?
>Ты все равно не осилишь.
К чему такой негатив?
>К чему такой негатив?
А что ты можешь? Ты тратишь свое время на непонятные ответы. Если бы ты хотел, ты бы начал делать. И тем более, одному это пиздец как долго.
>Зачем мне брать за основу котлин?
Котлин как пример людей, которые ебашили его с 11-го года. А что можешь ты, один человек, предложить андройду? Нихуя. Влажные мечты и только.
5. Дебаг;
6. Рефакторинг;
Дебаг и рефакторинг должны идти рука об руку с тестированием. Если возникло необработанное исключение, рантайм языка должен писать соответсвующий машиночитаемый лог, а языковой сервер должен этот лог читать и предлагать сгенерированные тестовые сценарии на основе аргументов, переданных упавшим функциям.
Средста рефакторинга должны предлагать нечто аналогичное — перед изменением определенной части кода языковой сервер должен предложить тесты с рандомными значениями для тех частей кода, которые планируется изменить.
Однако, этого мало. Лучше минимизировать потребность в дебаге как таковом. Как это сделать? Многие проблемы отлавливаются подходящими системами типов. Но проверка и вывод типов — операция дорогая, а это противоречит замыслу сделать компилятор быстрым. Как быть?
Очень просто: исходный прогон компилятора должен относиться к языку, как к динамически-типизированному. Всякая синтаксически-верная программа должна запускаться. И лишь затем, когда первичный прогон завершен, в фоновом режиме можно продолжить заниматься тайпчеком, попутно оптимизируя и заменяя динамические части статически-проверенными. Раз у нас уже есть языковой сервер — надо использовать его по полной. Более того, подобный фоновый режим тайпчека и оптимизации позволит использовать плагины-тайпчекеры и плагины-оптизиматоры, сохраняя при этом все прелести быстрой компиляции. Выходит как JIT, но на пару шагов дальше.
>>71413
Вопрос не в том, могу я или нет, стану я или нет. Вопрос был в другом: зачем нужен этот негатив?
Мне нужно по фотке распознавать что записано в каждом прямоугольнике( всё будет рисоваться от руки)
Порядок действий такой:
1.Я программно задаю формы-разметку. Определяю что там должно быть записано внутри.
2.Потом пользователь рисует такую-же разметку, вписывает свои данные.
3.Я сравниваю то, что должно быть, и что нарисовал пользователь.
Хорошо. А теперь научись писать более понятно.
Первое, что тебе нужно сделать, это найти библиотеку распознавания говна.
часа три просидел там, ничего подходящего не нашел. Сюда уже от безысходности решил написать.
господи, как все просто то было. метод setCurrentItem view pager'a может принимать 2 параметра viewPager.setCurrentItem(position, false) где false как раз таки запрещает прокрутку.
А каким скриптом вытаскивать блобы?
часов 30 максимум.
> окХттп, ретрофит и воллей, что из них самое быстрое/простое относительно изучения и имплментинга
связка okhttp+retrofit , применяй ее, про воллей смело забывай и забивай. Ретрофит быстр в работе и элементарен в использовании, ты за час по сути полностью освоишь работу с ним. Во всех конторах котируется именно он
Спасибо за ответ, анон, пойду гуглить мануалы по ретрофиту. Хорошей тебе жизни.
inb4: socket, django (пока такой размах не нужен), firebase (не охта связываться с гуглом).
Хуй его знает. Берешь и поднимаешь. Я вот тоже думаю в бэк как-нибудь углубляться, но только в руби.
Cмотря что у тебя там.
Если что-то вроде вк, так ебни ис онлайн - фалсе, тащить ласт данные с бд.
Расписывай конкретней.
На экспешн с отсутствием интернета выводи соответствующую ошибку на весь экран и всё. Посмотри 3 статью Ханнеса Дорфмана про MVI, он там как раз обрабатывает ошибки.
> как задать использование одного коннешкна, чтобы не тормозить реквест.
Используется Persistent HTTP или нет решает сервер, а не клиент.
Спасибо за разъяснение. В любом случае, какие параметры обычно используют для okHttp коннекшна? Это ведь одна из самых распространенных либ для интернета, но при этом другие приложения не тормозят при соединении с сервером.
Можешь по чему угодно делать.
У меня курсовая по этой параше будет
https://www.themoviedb.org/documentation/api
> У меня курсовая по этой параше будет
А потом они на собеседовании своим дипломом хвастаться будут...
>А потом они на собеседовании своим дипломом хвастаться будут...
Это курсовая. Диплом у меня на следующий год. Кек.
Как я могу конвертировать кучу больших баз данных .plist в базы данных андроид студио? У андроида вообще есть что-то удобное, быстрое и визуальное?
Хули я должен постоянно импортировать используемые вещи и они не подключены по дефолту? Нет, ну серьезно, даже чтобы нажать на кнопку надо что-то импортировать. И мне кажется, или я в процессе кучу лишнего пишу, в си такой хуйни не было.
А вот сторибоард с констрантами охуенны, но я еще учусь - хули хедер и футер кажутся неизменяемыми какими-то, лайк навигейшн контроллеры из хкода. Почему они не едины как-то с центральной частью. Я туда даже кнопки кинуть не могу свои.
Вообще есть какие-нибудь хорошие видеогайды? Да, я шапку смотрел. Мне бы что-нибудь на русском без смс и регистрации. Чтобы прям шли и поясняли, зачем эту хуйню пишут и почему и какие полезные фичи есть.
Нужно мониторить курьеров и накладывать маркеры на карту с их местоположением.
Каждый курьер - то JSON с указанием даты, времени, долготы и широты. Этих курьеров будет около 30. Как максимально корректно с точки зрения архитектуры реализовать параллельную загрузку и обработку 30ти JSON?
Кроме того, курьеры постоянно передвигаются. Следовательно, мне нужно будет по таймеру раз в несколько секунд загружать JSON'ы по новой.
Какие подводные камни?
Получать с бэкенда сразу всех 30 курьеров JSON-массивом.
>Какие подводные камни?
Да никаких. Похуй на эту архитектуру, ты сначала так попробуй реализовать.
Сразу скажу, тебе нужно ебнуть сервисы. Если они передвигаются и отправляют свое расположение в бек - значит тебе тупо придется дергать этот бег через 3-4 минуты - это и будет у тебя в главном сервисе.
Потом ебнишь мап, захуяришь туда координаты и дело пошло.
>сторибоард
Забудь это говно, господи как же я бомблю от сторибордов в хуйкоде (от ебанутого передвигания мышкой).
Каких нахуй базы данных ты держишь в плисте? Это ж тупо ключ-значение, никаких простых средств нет, можешь написать свой конвертер. Строки/стрингдикты относительно легко перевести, находится они должны будут res/values/*.xml. Аналог Info.plist это AndroidManifest.xml, там должны быть декларации компонент ведра (с картинками для приложухи), пермишены и можно держать ключики для сторонних апи. Удобное-визуальное? Ну разве что для локализации строк. Массивы строк/картинок в arrays.xml, вообще конечно зеркального отображения не будет, но оно и не нужно.
>Хули я должен постоянно импортировать используемые вещи
Как же мне бомбит от кучи говна которые тянуться неявными неймспейсами в свифте или говномамонтные хедеры обж-с. Можешь ебашить звездочки, но то такое.
>хули хедер и футер кажутся неизменяемыми какими-то, лайк навигейшн контроллеры из хкода. Почему они не едины как-то с центральной частью.
А это уже как ты сделаешь (можно же не только фрагментами хуярить, в отличии от айоси, где от навконтроллера неуютно), на самом деле ты можешь пихать туда свои вьюхи, но лучше так не делать, для тулбара можно делать кастомные actionView, это по сути будет UIBarButtonItem с кастомной вьюхой.
>Мне бы что-нибудь на русском без смс и регистрации
Разве что http://startandroid.ru/ru/ , но там скорее всего много старья и не на котлине вроде. Ты же не учил айось на русском, дно же.
Ну хуй знает, мне удобно мышкой, прям двигаю и чувствую как нравится.
На скринах база в плисте, 25к строк и есть еще больше и много разных, их делаю не я, просто вставляю и программа работает. То есть их должны мочь сделать обычные пользователи, например. То есть ты видишь - у меня словарь, внутри которого словари, в которых еще словари в которых массивы со стрингами и т.д. Печально, что нет конвертера, какой-то гемор прям. Планирую в андроиде делать базы лайк 2 скрин. Конвертиую хмл в ТайпедАррей и стринг-аррей и по ключам и индексам иду дальше. Какой-то гемор, что нет просто массива, в котором могут нормально лежать массивы и прочие вещи по соседству. Вроде есть листы как в с# и еще что-то, я в процессе.
Я пока делаю в дефолтах, я понимаю, что я могу всё снести и чистую нужную вьюху туда заебашить, но пока не понимаю как с текущей дефолтной шапкой работать.
И да, я учил айось на русском. Конечно, все проблемы приходится гуглить только на английском, как и 99% прочих вещей. Мне нужны нормальные пояснения, где какие кнопки и что я вообще могу. Например вот база в хмле, какие варианты её сделать, сейчас у меня примерно такая же вложенная структура, какая была, но можно ли как-то по-другому и проще/сложнее. Как извлечь данные в какие-нибудь нормальные массивы из неё и т.д. Я такого пока не нашел, везде показаны, обычно, дефолты с простыми стрингами, а дальше типо сами разбирайтесь. вот могу арреи, могу арреи со стрингами, а что еще могу?
будьте добры, помогите разобраться
> а что еще могу
Ты че ебанутый в нотепаде++ кодить?
Тогда открываешь документацию и смотришь что класс может.
Куда ты их вставляешь? Тебе контент менеджер присылает хуйню что ли?
Сделать такое в качестве своего первого приложения- нормальная идея?
А в чем проблема?
Я хочу, но не могу, я пока на уровне "бля, что тут вообще писать и куда, а еще эта ваша джава ебанутая"
Есть json ответ сервера с новостями. Воспользовался сервисом, который автоматически генерит сеттеры и геттеры . Он сгенерировал два класса, в одном классе геттеры и сеттеры для описания конкретного айтема, а второй класс имеет сеттеры и геттеры для списка. Как сделать правильно, объединить в один класс или оставить как есть?
>о знают ответ на данный вопрос.
Ну у тебя может быть один класс, который содержит лист новостей бугуртов, а есть класс бугурты - которые содержат расписание, тему, уровень возгорания автора и т.д.
А лучше бы скрины приложить, ты читать сам классы не умеешь что ли?
Они там по ебанутому названы. Класс с описанием Event, а у списка класс называется Example.
Это просто иконка.
ссылка: http://book.goalkicker.com/AndroidBook/
инфа: https://www.reddit.com/r/androiddev/comments/8csgaw/free_android_development_pdf_book/
Спасибо, анон.
Документацию читай, мразь.
https://academy.yandex.ru/events/mobdev/msk-2018/
Правда, никто так и не понял почему.
Кстати на гите море репозиториев валяется ну они и дауны, даже посмотрел парочку. Пиздец они идиоты. Думаю спизжу идеи с них и попробую свое сделать. Только я с АПИ пока диска не разобрался, но думаю разберусь.
гитхаб. хули тебе не понятно, очкарик.
ща на улицу выйдем сразу пару уроков схватишь на лету.
чтобы больше здесь не выпендривался.
>ка, пишу на рельсах. Если по пару часов в день ковырять андроид студио и пилить свои говноприложения, реально ли за год-полтора достичь уровня при котором можно попытаться устроиться андроид разработчиком, причем не джуном, а миддлом?
Нужно побольше ковырять, хотя, если ты схватываешь на лету а не как я даун то вполне за полтора года можно попытаться ебнуть мидла.
Да и что тут говорить, я за 5 месяцев с нуля устроился на стажера.
Правда я завтра ласт день работаю
Ты вообще в доки можешь?
А еще убунту параша, советую что-нибудь другое поставить.
И вообще такой код первый раз вижу. Зачем тебе 10 раз создавать текст вью?
Продолжаю.
Если тебе нужно создавать программно текст вью, то тебе нужно просто сделать пустой LinearLayout, например, и говорить, мол цикл фо - заебень мне 10 текст вью и создаешь их программно, можешь почитать как это делать, а после этого говоришь линеар адд текст вью.
Там я понимаю, что должен передать view, но почему вместо view прокатывает то, что по сути является ViewGroup?
10 штук их там просто в тестовых целях
Мне хочется иметь что-то типа плитки состоящей из текста и кнопки. Сколько таких плиток, и какой текст на каждой из них я заранее не знаю, это будет делаться в цикле.
*так я
> что по сути является ViewGroup?
Что вьюГруп? Линер - вьюГруп а последний в свою очередь наследуется от вью. ТекстВью - просто Вью. Смотри пик и читай про LayoutInflater.
>Мне хочется иметь что-то типа плитки состоящей из текста и кнопки.
Если тебе это нужно - просто СОЗДАЕШЬ ОДИН линеар леяут. Получаешь его в программном коде а дальше СОЗДАЕШЬ ПРОГРАММНО CardView чтобы была плиточка а можешь и не создавать и внутри него TextView.
И никакой инфлатер вроде не нужен для этого. Примеры найдешь в гугле.
Я реально запутался. Вроде как есть 100500 способов это сделать и 99% из них неправильные. Я так понимаю, что для моей задачи вообще никакие xml не нужны, так?
>что для моей задачи вообще никакие xml не нужны, так?
Линер леяут только хмловский.
Остальное программно ебашишь.
Блядь, мне кажется, что я все это пойму к тому времени когда буду совсем седым, и мне уже будет похую на то, сколько я зарабатываю.
Я могу представить, что хуйня в хмл- это вроде как... класс... экземпляры которого я как бы могу создавать, настраивать их, добавлять что-то внутрь и в тоге все это отображать?
на самом деле пиздец дальше. И даунам, таким как ты и таким как я нужно просто больше времени затратить. кек.
Изначально я знаешь что пытался сделать? Захуярить для плитки свой класс наследующий от ВьюГрупп, в котором два поля: кнопка и тествью, потом в цикле в каждой итерации создавать экземпляр класса ну и ... дальеше как-то попробовать его отобразить. Вроде как это возможно, но не для таких как я.
>Я могу представить, что хуйня в хмл- это вроде как... класс... экземпляры которого я как бы могу создавать, настраивать их, добавлять что-то внутрь и в тоге все это отображать?
Нуу, тип "да"
в кавычках потому что "такое понимание хуевое, но хотя бы лучше, чем вообще никакое"?
Ну тип верно, только я не читал про то, как андройд реализует превращение из программного текстВью в отображение хмл. Может быть он инфлатер самостоятельно юзает, или нет, я хз. Я просто так добавлял.
Я с этими лайаутами и вью путаюсь жестко и не понимаю что конкретно и в какой момент будет реально отрисовано на экране.
да-да, чукча, не читатель, чукча- писатель
Во-первых, я тебе последний раз поясняю.
Во-вторых - ЧИТАЙ ВДУМЧИВО и если не понятно, ЧИТАЙ ЕЩЕ РАЗ И ИЩИ.
У тебя есть хмл, базовый отец - релатив - СМОТРИ пик, в нем ты создаешь ЛИНЕР ЛЕЯУТ и все.
Потом ищешь по ид линер леяут _ОН УЖЕ ОТРИСОВАн.
и хуяришь туда текстВЬЮ.
и они там отрисовываются.
ВСЕ.
Да понял я, что ты предлагаешь. Меня печалит, что я не понимаю, что там будет происходить. Для меня это просто "напиши вот так, и все заработает"
ViewGroup наследуется от View, а потому и является просто View только с массивом View, даун.
Тяжело писать приложение впервые видя андроид студио и имея ну очень поверхностное представление о java
xml в андроеде просто удобный декларативный способ верстки. Тебе не надо вручную писать код инициализации вьюх, их размеров и тд.
Ты их просто объявляешь в xml.
Андроид в свою очередь с помощью LayoutInflater парсит xml и генерирует из него ровно такой же код, который бы ты сам писал.
Так вот.
Запомни пидор.
Все *Layout это ViewGroup extends View.
ViewGroup, не считая экзотических случаев, когда ты в свой CustomView хочешь влепить свой View или ViewGroup.
>Тяжело писать приложение впервые видя андроид студио и имея ну очень поверхностное представление о java
Для таких как ты МИР придумал юдасити, кстати.
После месяца дрочева ты как новенький сюда придешь и будешь ставить таких пидарасов на место.
>то я буду посвящать значительную часть свободного времени помогая нубам
А я уже помогаю. Хули выебываешься. И тут нет пацанов. Только ты да я и пару шакалов.
Как может выебываться человек, который пытается написать простейший диспетчер процессов вращающихся в оперативке, но у него опускаются руки, и ему кажется, что разобраться во всей этой хуйне- не для средних умов?
ну нахуй, пойду нажрусь, все тлен
бро, если я такое напишу, и выложу в маркет рублей за 60, то хотя бы на пиво заработаю за счет долбоебов купивших случайно, или вообще бесперспективно?
Тогда другой вопрос. Более-менее успешное приложение в котором есть откровенный говнокод- это редкость?
>Более-менее успешное приложение в котором есть откровенный говнокод-
Это нужно обращаться к тем, кто сидит за ведройдом +2 года.
А я еще зеленый.
Хотя исходники телеграмма тому пример. Кек.
> Более-менее успешное приложение в котором есть откровенный говнокод- это редкость
Это реальность. Успех и говнокод никак не зависят друг от друга.
Инфа. Она хоть немного прояснила для меня все то, что происходит в этом ебаном андроиде
Нас ебут, а мы крепчаем. Глядишь, через пару лет хоть на кредитный Фокус и ипотечную двушку в коммиблоке будет хватать.
Раньше у нас АПИ был доступ к всем процессам вращающимся в памяти. Но мы решили, что это не нужно. Вместо этого теперь можно посмотреть запускался ли какой-то процесс год назад. Ну, как можно... вроде как есть такая возможность, но как она работает- разбирайтесь сами.
Никто мне за это не платил, я андроид студио установил 2 дня назад.
Имею пять классов церковно-приходской школы, умею доить коров. Хочу стать конструктором авиадвигателей, с чего начать?
Задачу ты может и решишь, но через жопу, и так, что самому себе всё желание дальше этим заниматься отобьешь.
Начни с малого, в шапке есть гайды, потом уже своё что-то пилить сможешь.
Вот у меня желание и пропадает уже. Не знаю за что хватать и не могу получить хотя бы примерной картины того, что с чем и как взаимодействует. Какой срок ставить себе для реализации задачи? Так чтобы было в меру сложно.
Ты уже достал своим диспетчером процессов. Если ты мне скажешь как это работает, то я оценю срок выполнения задания.
мимо
Пирожок дружок, ты здесь ноешь и пытаешься писать в стиле чукчи. Тебе дали совет - делай. Не поймешь - залетишь сюда, глянь, а кто-нибудь да поможет.
Все, а теперь иди пили проектик.
С Алексеем мы дружим с детства. У него сейчас нет зубов спереди. Он вообще сейчас как какая-то шавка по базарам, по рынкам лает как мелкая собачка. Может побежать, откусить.
Мы с ним ходили по барам, рестораном и искали Алексея. На самом деле, ни он, ни я не Алексей, но мы так друг друга называли. У него очень тяжелая жизнь сложилась.
Касательно андроида нагуглил только хранение в SharedPreferences инфы.
Как это обычно делается?
Ты бы ему еще посоветовал ContentProvider тупо для доступа к своей бд использовать.
А что не так с AM? Это вполне себе валидный и корректный способ хранения кренделей с заделом на будущее.
Есть только одна причина использовать избыточный и громоздкий AM в 2018 году - если ты у мамы микрософт, гугл или яндекс и тебе нужен SSO в своих приложениях.
Большая часть приложений осиливают хранить там и ничего, вполне себе нормально живут.
Завтра нужно все-таки начать доделывать.
Да хуй пойми.
Иногда андройд настолько надоедает потому что только в нем и сижу что хочется побродить по нетику, посоздавать что-нибудь этакое. В итоге все скатывается к хуям и я возвращаюсь к андройду спустя 2-3 дня с базовыми знаниями какого-нибудь языка который мне в жизни никогда не пригодиться.
Погугли. Там это как-то лечится.
если это имеет какое-то значение, картинки загружаю глайдом
Выглядит как каноничный shared element transition в фрагмент.
Может есть какие-нибудь модные ресурсы которые стоит почитывать, или надо подучить что-то не на прямую связаное с мобайлом (алгоритмы, криптография)?
В общем как поставить приоритеты молодому андроид деву?
люто дякую за пикчу
Джун
>- Kotlin — ... С 17 мая поддерживается официально.
поправьте шапку в след раз, не с 17 мая, с мая 17-го года
>Нужна простая грамматика, подобная паскалю, чтобы токенизация и построение AST происходили за миллисекунды даже на больших приложениях.
Большая часть времени компиляции уходит не на разбор текста и построение AST, а на дальнейший анализ. Например резолв идентификаторов, прогон диагностик. И чем более выразительный язык, тем больше на это нужно времени.
Так вот, по идее эта проблема должна решаться как-то проще, чем ручное копирование и запуск .apk?
Лол, установи adb-tools и подцепи девайс, включив на нем предварительно отладку по усб.
Гугли на стак оферфолоу по английски. Я в свой время заябывался в биусе чёт включать, потом доустанавливать гавнище какоето и только потом эмулятор стал запускаться... правда я дебил на убунте всё делал... для запуска на андроидж устройстве тоже пришлось позаябываться
((GridLayoutManager) mPhotoRecyclerView.getLayoutManager()).setSpanCount(colCount);
в онглобаллайотлистенер все работает, если
GridLayoutManager layoutManager = (GridLayoutManager) mPhotoRecyclerView.getLayoutManager();
layoutManager.setSpanCount(colCount);
то поворот девайса полностью отваливается?
А может ты побольше бы вставил сюда своего сраного кода, чтобы мне глаза удобней вырывать было?
Блять.
Это ещё раз красноречиво показывает твой уровень. Тебе говорят, что действует правило A => B. А ты пытаешься использовать правило Not A => Not B, которое не следует из заданного.
А ведь этому на первом семестре в любом заборостроительном техникуме учат.
Ты меня со своим ебырем путаешь, это ему ты уже говорил.
Бля, наконец-то. Хотя я и так пет проекты пишу на 21+.
>>79290
А зачем тебе это? Так же лучше. Скачать material theme?
> Как мне не нравится этот биндинг андройда. Просто пиздец. Отвратительная либа, хотя я был не проч на МВВМ сидеть.
Так сиди, кто тебе мешает. Data binding вообще с архитектурой никак не связан.
-10% юзеров как будешь своим продактам и продажникам объяснять, ммм? Напомню, что от среднеуспешного продукта в 100к инсталлов, это 10к юзеров.
Срал на них
Устройства — не пользователи. Пользователи — не твои клиенты. Клиенты — не то подмножество клиентов, которое обеспечивает ценность.
Можешь себе эклипс напердолить попробовать, поддержка градла там есть, хотя хуй знает что из этого выйдет.
Можешь поставить линукс.
Я нашел в гугле postponeTransition, но для фрагментов это работает только с api 26, а у меня 25.
>у картинки сначала размер 0х0, и только потом глайд загружает картинку - получается, что картинка сначала уменьшается до 0х0, а потом расширяется. Можно ли это как-нибудь сделать так, чтобы размер вычислялся до самой анимации?
Может быть из-за того, что ты выполняешь методы активити\фрагмента в который ты возвращаешься и там опять все по новой загружается? блять
> в конструкторе ресайклера, и потом передаю их в .override() глайда
А layout params у imageview менять на нужные тебе не забываешь?
Делаю примерно так для оповещения о входящем сообщении:
MediaPlayer.create(getBaseContext(), R.raw.sound_in).start();
Но если таким образом запускать звук слишком часто, то он перестает проигрываться вообще до перезапуска приложения.
Да, нагуглил уже решение с release() предварительным, вроде теперь нормально, но спасибо за ответ.
> предварительным
Я хуй знает что ты там придумал, но лучше переиспользуй, а не каждый раз создавай.
А еще точно есть какой то способ проще, который использует NotificationManager, глянь в исходниках show.
А зачем тебе вообще MediaPlayer. Может лучше воспользоваться SoundPool'ом или AudioTrack'ом?
Приведу пример. С спринг бут я создаю класс с описанием бинов, описываю в этом классе объекты, которые мне нужны, затем в нужном мне месте пишу @autowired и всё! Никакой еботни не нужно.
В даггере же мне нужно: создать модули, затем их объеденить в компоненте, затем в месте, где нужно я должен вызвать (!) билдер даггера и вызвать inject(this). Это dependency injection? Это хуйня же какая-то.
Помогите, может можно как-то по человечески это всё сделать? Гайдов в интернете 1.5, и во всех советую внутри класса вызывать inject(this), IoC то не соблюдается получается. Короче пиздец, я запутался, помогите
Неправильные ты гайды читаешь дяд федор, просто ведроидовские компоненты убогие и мы не можем участвовать в их создании, потом и вынужденны вызывать inject как можно раньше, но на самом деле и это не нужно.
Гайдов миллион и тележка. Спринг ебашит рефлексией и потому все так просто.
Если коротко в компоненте объявляешь модули от которых она зависит для предоставления своей хуйни. И методы которые нужны для преодоления ведроидовский костылей, можешь выбрать inject(GovnoAndroidComponent xuita), но по мне лучше оставить плейн геттеры типа:
SuperDependency getSuperDependency();
Ну или:
SuperDependency superDependency();
Теперь в модулях ты пишешь код который создает нужные зависимости.
Это самые базовые вещи, но они быстро становятся весьма монструозными, потому есть некоторые упрощения.
1) Объявить класс который является зависимостью, при этом пометив его конструктор аннотацией Inject, и прааметры там могут быть только те, которые уже есть в графе зависимостей, тогда тебе не нужно ебать и создавать его в модуле и что бы сделать его доступным через компоненту добавляешь туда его геттер, ну или если инжектами пользуешься то ничего. Но таким макаром ты выставляешь в качестве зависимости конкретную хуйню, так лучше не делать. Но можно спрятать конкретную реализацию оставив ее конструктор с инжектом, а в асбтрактном классе модуля конвертить конкретную реализацию в ее интерфейс:
@Module
interface ConvertModule {
@Binds
public abstract Dependency bindDependency(DependencyImpl impl);
}
Из почти актуальных могу посоветовать вот эти:
https://habr.com/post/279125/
Вам зачем именно "двачевская"? Чтобы тупыми вопросами заебывать, которые стыдно спрашивать в обычной?
Иногда пердолинг заебывает, а ответов нет. А в телеге игнорят. Хуй поймешь.
Да, все верно - найти тупых объебков, которые будут бесплатно отвечать на идиотские вопросы войтивайти, которые игнорятся в нормальных каналах.
Может такая проблема была у вас или у других телефонов Xiaomi, но фишка в том, что при изменении Java-кода, Андроид Студия выкидывает мне сообщение о том, что INSTALL FAILED USER RESTRICTED, предлагая удалить, а потом заново поставить приложение. Это работает, да, как впрочем если нажать Отмена и снова запустить проект на телефоне.
Но как избавиться от этого окна?
Вообще, это обычно возникает, когда ты написал приложение на одном кудахтере, а вечером пришел домой, включил своего обоссанца, попутно скачивая ласт изменения с гита, и пытаешься опять запустить приложение. Вот тогда и возникает. Ну и в других ситуациях примерно похожих на эту.
Но как у тебя - это пиздец конечно.
Нормально все теститься без проблем. Дело не в Ксяоми.
Instant Run?
>Никто его не использует.
Ну будешь мне еще блять говорить мне об этом. Когда я работал стажером по андройду я как раз ебашил МВВМ. Самое главное, никто мне нихуя не объяснял что да как делать. Просто хуярил на ощуп, а потом на митинге говорили "Ну пацан, пиздец у тебя говнокод конешно." Я блять готов был прям там разъебать ему морду, пидору конченному.
> столько говна нужно читать и делать. Особенно читать.
Добро пожаловать в программирование, тебе нужно будет делать постоянно. Не нравится - есть куча других профессий.
>он конечно приятен, но только в WPF, а не на ведре.
А я недавно вот начал MVVM копать, вроде достаточно примерчиков, чего плохого-то.
мимо
Допустим, есть служба 1, которая отслеживает события в clipboard, создает кнопку оверлеем, нажатие на которую делает запись в базу данных (активити не участвует).
Стоит ли логику для записи в бд пихать в эту же службу, если из активити тоже можно делать запись в бд? Или лучше сделать отдельную службу?
Мне кажется, лучше отдельную, все же служба-1 имеет функционал, который никак с этой активити за пределами базы данных не пересекается.
Где я обосрался?
Несколько специализированных - это:
- Меньшая связанность кода, меньше риска что потом все навернется если захочется что-то переделать
- Хорошая расширяемость
- Большая тестируемость
Одна для всего - это:
- Чертовы спагетти, тронешь в одном месте отвалится все
- Плохая расширяемость
- Плохая тестируемость.
Так?
>Че?
Хули че-то блять. Рх же тупо нужна для того, чтобы простенько взять запросы с сервака. Ну или для выебонов аля возвращая обсервабле и работая дальше с ним. Но это же больше для продвинутых.
Хули на вопросы не отвечаешь-то.
У нормальных пацанов уже давно динамическое апи и тонкий клиент, а он тут со своими ретрофитами.
Хотелось бы пару вопросов: Сколько стоит продвинуть приложение, хотя бы для первоначального выхлопа? И какой вообще выхлоп? Много ли денег надо на развитие, для того что бы вкатиться? Понимаю что вопрос зависит от того, что вообще за приложение, но больше интересует, сколько примерно. Возьмём даже простенькую игрулю, сколько нужно на её развитие? Гугел выдаёт разные недоблоги всемогущих, и пишут начиная от "без вложений" заканчивая лимонами. Или мне уебывать с этими вопросами в biz?
Ты написал про тонкий клиент и динамическое апи, что это как не еще один браузер?
Братишка, ответы перепутал
WebView умеет запускать Intent'ы, отображать бесконечные списки(в том числе пейджинг), нормально работать с sql, нормально кэшировать навигацию и стейт, и еще хуеву тучу других вещей, которые сейчас не вспомнишь? А самое главное, может оно блять работать быстро?
1) Держать сервис, который слушает в отдельном потоке изменения сервера, и пилит их в базу.
2) Перед каждым запросом к локалке делать запрос нужных данных к серверу и синхронизировать (всё это в репозитории)
В певом варианте смущает, что дополнительный сервис пришпиливается, хотя код чисто джавовский.
>джавовский.
Имею ввиду, что без android-зависимостей. Написан он конечно на котлине, под сладкие стоны полиночки...
Подкиньте идей, как можно отловить и исправить?
Содержимое build.gradle на всякий случай, может кто глянет и что подскажет - https://pastebin.com/vX91kas9
Ок, учту
> 'com.yandex.android:mobmetricalib:2.40'
100% вот эта пидорасня падает в отдельном процессе, поэтому и не закрывается приложение. У меня такое же было. Яндекс возомнили себя гуглом и решили обмазываться несвежим IPC между всеми приложениями с установленной метрикой, а не делать как нормальные люди из других сервисов аналитики.
ммм, да, как вариант. Это лучше смотреть в смерженном манифесте.
Спасибо.
вот да. Этот парсинг апи нужно запускать как сервис, чтобы работало постоянно?
retrofitService.getSomeShit()
.repeatWhen(observable -> observable
.delay(DELAY, TimeUnit.SECONDS, true))
.subscribe();
Да, оно! Спасибо, анон, кучу времени на это потратил
огромное анонское. Тогда не затруднит ли сказать, как все это гуглить? потерялся на том, что не могу загуглить с примерами реализации retrofit+rxJava.
Inb4: retrofit call api time continue infinite call request.. - все это перепрогуглил но получил нул. Подскажи, как нагуглить?
по запросу retrofitService repeatWhen
нормально
учись: больше сорока часов разбора прилажух с retrofit. Сложилось мнение, что на всей планете мне одному понадобилось постоянный call апи. Ни одного примера не нашел. А все что скачал - повторяют дефолтные туты. Решил немного подразобраться мини прилажуха нужна самому и никогда их не писал.
Прошла неделя. Теперь уже знаю, что package нужно задавать правильный сразу. Что интенты вызывают активити, а активити обладают циклом жизни. Что нельзя хардкодить. Что инфу нужно зачем-то из ресурсов проводить через какой-то буфер адаптер вью, чтобы из него вывести в UI. Что бы работать с api нужно прочитать и понять книгу в 356 страниц по retrofit. А что бы было удобно работать в ретрофит, нужно прочитать книжку и понять книжку по реактивному программированию RxJava. А чтобы делать запросы, нужно еще изучить OkHttp, который как бы и является частью retrofit, но чтобы его понять, нужно, наверное, охуеть. ПОтому что все материалы, которые я поглядел слизаны с одного примера: получить данные с апи по нажатии кнопки или при загрузке прилажения.
Притом, что несклько дельных советов я смог узнать только в рунете. Не в англосреде. И это микромаленькие советы.
Теперь язнаю, что чтобы мне сделать свою мини прилажуху, которая должна всего-то постоянно отображать данные полученные ей с апи 5 раз в минуту и если что - пискнуть. Так вот, чтобы сделать эту миниатюру мне нужно изучить более полутора тысяч страниц. Первые три дня я думал, что просто плохо соображаю. Теперь же, я чувствую себя обезьяной со штанегенциркулем. А ведь 7 лет бэкенда позади. Вот такой андроид.
Да хули здесь учиться. Нихуя ничего не происходит. Меня блять трясет уже. Зимой я не мог реализовать пагинацию через вытаскивание из Реилма. Я блять неделю на это говно потратил, нахуярил вопрос на этом стековерфлоу - в итоге я так и не осилил это. Забросил.
В марте я не смог прокинуть броадскастИнтент через сервис, чтобы взять данные в одной из нужных активити - я блять неделю опять на это говно потратил, в итоге я опять нахуй забил на это дело.
Сейчас мой второй день ебанины с нормальной архитектурой андройда - я блять уже начинаю чувствовать эти МВП, МВВМ, но я нихрена не могу написать, потому что в этих репозиториях из гитхаба хуярят люди с АСИН ТАКСКАМИ хуясками, через анальные даггеры и прочее.
Блять, даже во фронтенд легче вкатиться, чем в эту ебанную архитектуру андройда.
>Сейчас мой второй день ебанины с нормальной архитектурой андройда
Где ты изучаешь архитектуру? Неужели это так сложно?
Алсо, реквестирую где можно доступно получить базу по построению приложения по MVP, ну, или по MVVM.
перед тем как писать прилажуху был уверен, что уже все How to, tutors, даже готовые решения и шаблоны на такую плевую задачу есть. Боже мой, как же я ошибался..
добро пожаловать в оопешный ад, братишка
>>85265
>>85366
Думал я один такой дурачек. В один момент мне надоела эта ебля с ведроидом, и я решил перекатится в Ruby/Ruby on Rails. Так вот в RoR все шло как по маслу. Есть дохуя нормальных гайдов на почти-что каждый пук. Сейчас опять вернулся на ведро, и опять этот ад. Ищешь какую-нибудь инфу по какой-нибудь хайповой библиотеке для Андроида, и читаешь тонну похожих друг на друга гайдов, а иногда и неактуальную хуету. За эту неделю обратного вкатывания осилил все-таки MVP, RxJava и Dagger 2 с горем пополам. Сейчас буду пытаться осиливать тестирование. В прошлый раз (год назад где-то), я, после попытки осилить тестирование, выкатился с подгоревшей жопой отсюда. Но не смотря на все это, меня все равно так и манит этот чертов ведроид.
А вообще, если есть какой-нибудь анон, которому было бы не лень иногда отвечать на мои возможно тупые вопросы, то я был-бы рад, если-бы ты отписал на фейкомыло feedbJUSedANUStubmRtaPUNCTUMi9]Zo.
>MVP, RxJava и Dagger 2
Это же изи всё, просто пиздец изи. Вы просто тут тупые все и не лечитесь. Нахуй вы вообще программируете под андроид?
меня нужда заставила - по работе автоматизировал некоторые сервисы, все сделал отлично, вывел апи, неубиваемый сервер, написал отличный бэк. Дошел до андроид и охуел просто. По другому не скажешь. А ведь всего-то хотел себе жизнь облегчить.
В какой-то мере соглашусь с первыми двумя пунктами, но на Dagger 2 я точно не меньше двух дней потратил. Хуй знает куда что пихать, как правильно всю эту парашу инджектить.
ну и кто разрешал андроидо-даунам многопоточность использовать? В этом коде гонка потоков. Пилите свои вьюшки и не лезьте в серьёзные вещи.
> В этом коде гонка потоков. Пилите свои вьюшки и не лезьте в серьёзные вещи.
Это код рандомного китайца, который я изучал. Что здесь не так что? Объясни поподробней.
после того как ссылка на INSTANCE была присвоена и до того как вызовется updateDatabaseCreated VM может зашедулить выполнение других потоков, а текущий убрать до лучших времён. Вполне возможно что другие потоки могут увидеть присвоенную ссылку на INSTANCE даже не входя в sync блок, только эта самая ссылка не была инициализирована до конца. Это data race классический.
>Засунь себе в анус свое изи. Ставлю сотку, что твой продакшен код настолько залит говном, как и твой очередной пост с предсказуемым пуком.
Сотку чего?
Вот только никто не сможет обратиться к INSTANCE, пока synchronized-блок не завершится.
А, да, действительно. Вот если бы INSTANCE присваивалось в самом конце блока, было бы нормально.
Т.е. здесь китаец инициализирует БД в единичном экземпляре, чтобы потом наверху, например в активити, получить этот инстанс и внести изменения в эту БД?
есть же книга "ява конкарренси ин практис", на хабре все уверены что понимают многопоточность, но это сомнительно
https://github.com/DrKLO/Telegram/tree/master/TMessagesProj/src/main
иеееееееееей
Телеграм это сраное сборище костылей и хаков.
Ну можно из кода ебашить что бы с xml не ебаться,
немношк меньше ресурсов жрется.
Ну я так посмотрел, сейчас вырублю. Включу в 12 ночи, как раз андройд покажут. Ну и в 7:30 - про котлин с питера чувак будет говорить.
Ну такое.
мне нужно дохуя чего делать. Но пускать в свою репу хер пойми кого еще и рукожопого - нет спасибо, даже за беслатно не надо
Напиши мне свою реализацию mpeg dash плеера для андроида. Как напишешь - файлик кидай по адресу /dev/null
Чет слишком сложно. Пойду лучше курсовую поделаю.
Эппл в очередной раз соснул.
Когда она уже в гидралиска регенерирует? Первый раз было прикольно, а теперь чет раздражает.
Ну или хотя бы протез поставит, чтобы никогда не просить об этом. Или она специально его снимает?
> Или она специально его снимает?
Конечно, надо же продемонстрировать дайверсити и инклюзивити.
https://www.youtube.com/watch?v=GAkkKjds00o&feature=youtu.be&t=3h4m54s
и лайфсайклам
https://www.youtube.com/watch?v=GAkkKjds00o&feature=youtu.be&t=3h15m47s
Они пытаются повторить гейпловский сториборд? НАХУЯ СУКА Фу блядь пидорасы, все им стрелочки рисовать хочется прямо в идеешке.
Live data, Room, супер архитектура.
Соррян за беспокойство, помогло банальное Invalidate caches, restart
особенности нативного кода. У тебя поля не инициализированны, пока к ним доступа не попросил.
>пока к ним доступа не попросил
Т.е. у меня существует лист из 20 элементов без инициализации полей?
У меня проблема в том, что при первой установке приложения ничего не показывается, при повторной компиляции показывается лист уже нормально.
И с этим ли связана инициализация?
Но я понял слегка. Спасибо анонче.
Вам про это еще с версии ~0.8 начали писать в туториале, что поля в дебаггере не отображаются, пока их не запросишь явно.
Проблема что когда открываю клавиатуру, она как бы закрывает часть чата. То есть если я открываю клаву из позиции на пике 1, то получается пик 2, а должен быть пик 3.
Как фиксить? Гугл говорит чето про android:windowSoftInputMode="adjustResize", но это фигня.
Накостылил вот такую хуйню, но она коряво работает при скрытии клавиатуры (поэтому сделал условие что только при открытии), и это же какая-то хуйня.
Наверняка есть какое-то более элегантное решение, задача-то распространенная.
Да вроде так и решается. Вот здесь точно было про это, глянь
https://youtu.be/BbxB3Sr55qw?t=20m45s
может и с хуя, кто тебя знает
setStackFromEnd(true) достаточно было поставить у лейаутменеджера, но за видос спасибо.
Правда, теперь оно отображает первые сообщения снизу, а не сверху, но в телеге например так же и всем нормально, так что похуй.
1) Как сделать так, чтобы в зависимости от какого-то условия приложение стартовало с разных активити? Т.е. если, допустим, пользователь не авторизован, то с Login/SignUpActivity, если авторизован - то сразу какая-нибудь FeedActivity.
2) Где хранить токен, получаемый с сервера при авторизации, чтобы реализовывался пункт 1?
>1) Как сделать так, чтобы в зависимости от какого-то условия приложение стартовало с разных активити? Т.е. если, допустим, пользователь не авторизован, то с Login/SignUpActivity, если авторизован - то сразу какая-нибудь FeedActivity.
Чекать shared preference. Если там есть что-то - открывать уже другой активити. Если нет - то авторизацию.
>2) Где хранить токен, получаемый с сервера при авторизации, чтобы реализовывался пункт 1?
В одном из приложений я хранил в sharedPreference. Но у тим лида пукан горел с этого.
> 2) Где хранить токен, получаемый с сервера при авторизации, чтобы реализовывался пункт 1?
AccountManager
Хранить в Shared Preferences всяко надёжнее, да
Фрагмент - обёртка над вью.
Это копия, сохраненная 14 июля 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.