Предыдущий мистическим образом был проебан, перекатиться не успели - перезапускаем.Стоим велосипеды на костылях, пока грейдл недовольно урчит, делимся фреймворками. Очкастой бабы на превью больше не будет.SON YOU ARE A DEVELOPER NOW
Котаны, а есть вообще гайды про то, как нормально прикручивать Support-библиотеки от начала и до конца, чтоб и материал и обоссаться современно?Ожидал нормальной обратной совместимости по графону, но блядь стоит как-то начать кастомизировать дефолтное отображение - всё идёт пиздой и легче реализовать самому (или нет?).Лайауты ругаются линтом на то что фичи всё равно только с 21й версии, кроме cardLayout, recycleView и fab практически нихуя нет.
>>1030496я имею в виду только графическую часть, с бекендом более-менее ок и понятно.
>>1030492 (OP)Господа, кто-нибудь щупал LambdaNative?
>>1032879Выглядит как наебка.Уебывай отсюда со своим говном.
>>1033004Твоя пикча наебка
>>1033027Пикча с сайта лямбданатив.
>>1033004Я спрашивал не про исследования хуицитилетней давности, а про опыт использования. Не одной жабой и кутёй сыт же программист.
>>1033004почему на твоей пикче нарисованы шприцы наркоманов?
>>1033004>>1032879я бы не стал доверять сайту, для пруфа предлагающему картинку с исследованиями 20-летней давности.сейчас например каждому школьнику объективно очевидно, что скорость разработки на java выше чем на с/с++. они бы еще асм привели что охуеть скорость.ну и соответственно, если более свежих пруфов с тех пор не появилось, то идея тухлая.
>>1033203Понял, никто из здесь пристутсвующих не щупал. Буду щупать сам.
В общем есть в ретрофите функция, пикрелейтед, которая по возвращённому HttpStatus определяет куда этот ответ потом отдать дальше - в onSuccess или в onError. Проблема в том, что мой сервер в случае ошибки вместе со статусом отправляет ещё свой код ошибки, а ретрофит не конвертит тело в случае ошибки (if (code < 200 || code >= 300)). Собственно вопрос - что делать в таком случае? Есть ли какой-то готовый вариант решения проблемы или тут надо делать форк и самому править ретрофит?
>>1033321так а чего ты хотел-то? 200е коды http - это успешная операция и не ошибка по статусу.твой косяк что твой сервер ошибки но кодом 2xx возвращает (это вообще вотзефак).
>>1033334Эм не, не так. Вот, например, у меня при регистрации, если логин введён неправильно (без @ или точки), возвращается HttpStatus.UNPROCESSABLE_ENTITY. Тоже самое возвращается, если неправильно введён пароль и ещё один параметр. На клиенте мне надо вывести сообщение об ошибке, но как понять что именно пошло не так, если на три действия возвращается UNPROCESSABLE_ENTITY. По-этому я в дополнение отправляю свой код ошибки, который нужен для вывода сообщения. Можно было бы в onError парсить errorBody, но в таком случае по пиздец идут тесты, так как придётся мокать таким образом, чтобы оно кидало HttpException, а чтобы его заполнить в тесте нужен ретрофит.
>>1033321>мой сервер в случае ошибки вместе со статусом отправляет ещё свой код ошибкине очень понятно, что ты хотел этим сказать. что код - это и так статус выполнения запроса, он говорит клиенту о том, ошибка у тебя или нет.и не вздумай ретрофит форкать - он всё правильно тебе делает.
>>1033339
>>1033342а кроме статуса, текст ошибки тебя возвращать не научили?подсказываю - так можно сделать везде.
>>1033346Ну, а почему вместо текста нельзя тогда просто свой код ошибки вернуть?Алсо, на всякий случай вот ещё код на клиенте и тест.
>>1033338>Можно было бы в onError парсить errorBodyага>но в таком случае по пиздец идут тесты, так как придётся мокать таким образом, чтобы оно кидало HttpException, а чтобы его заполнить в тесте нужен ретрофитthrow new HttpException ?чё?)))))
>>1033347То есть получается, мне в тесте, чтобы протестировать ветку onError нужно кинуть HttpException, а для него нужен ретрофит.>>1033348>throw new HttpException ?>чё?)))))Response нужен ретрофитовский.
>>1033353>Response нужен ретрофитовский.ну дак создай, лалкаResponse.error(int code, okhttp3.ResponseBody body)https://square.github.io/retrofit/2.x/retrofit/index.html?retrofit2/class-use/Response.html
>>1033355О, а вот про это я не знал. Походу это решает проблему, спасибо.
>>1033353>Ну, а почему вместо текста нельзя тогда просто свой код ошибки вернуть?потому что ТАК ПРИНЯТО и написано в стандартах https://tools.ietf.org/html/rfc2616#section-6.1.1 , что 2xx - не ошибка, а информационный статус что всё ок в разных вариациях. Хочешь кидать ошибки - кидай другие статусы.
>>1033362Мне кажется мы про разные вещи говорим. Я не кидаю свои коды ошибок вместе с 2хх статусом, я их кидаю вместе с другими статусами (422 в данном случае).
>>1033370скорее ты как-то криво выражаешься.>свои коды ошибок вместе с 2хх статусом, я их кидаю вместе с другими статусамиу одного запроса - один статус (он же код ответа - response code).как ты можешь несколько статусов одновременно вернуть?
>>1033380Вот что я имел ввиду. Наверно да, хуёво объяснил.
Хмм, ну оно работает, но что-то как-то хуёво выглядит. Не знаю даже. На каждый тест жсон придётся хранить.
>>1033384это тело/содержимое ответа, ага.тем не менее у тебя статус лишний в json-ответе.правильнее было бы выкинуть его нахуй в случае успеха.а в случае ошибки получать ОСОБЕННЫЙ json из ошибки - типа как { "error": "error text" }.
>>1033395>но что-то как-то хуёво выглядитпотому что ты константы завёл зачем-то, вместо того чтобы в теле теста это писать - с первого взгляда не видно что твои тесты делают, если не вчитываться.и в данном случае похуй если у тебя значения будут дублироваться в разных тестах. для твоего случае каждый тесткейс должен быть изолирован от другого.
>>1033406>потому что ты константы завёл зачем-то, вместо того чтобы в теле теста это писать - с первого взгляда не видно что твои тесты делают, если не вчитываться.Ну это наверно было очевидно, но я совсем недавно начал заморачиваться тестами.>и в данном случае похуй если у тебя значения будут дублироваться в разных тестах. для твоего случае каждый тесткейс должен быть изолирован от другого.То есть, вот так?
>>1033395уже лучше, но тебе ещё нужно определиться что ты тестируешь, и сделать соответствующий класс и методы.Типа класс для тестов логина - TestLogin, в котором каждый метод проверяет какой-то отдельный случай. (например методы okayLogin, wrongLogin. wrongPassword итп)loginRequest_shouldReturnGoodResponse - оч хуёвое название. Оно вместо того что ты тестируешь говорит то что ты должен получить в ответ (а это ты и так проверяешь внутри теста).
>>1033422>loginRequest_shouldReturnGoodResponse - оч хуёвое название. Оно вместо того что ты тестируешь говорит то что ты должен получить в ответ (а это ты и так проверяешь внутри теста).Да, придумывать названия это самая сложная часть программирования.
>>1030492 (OP)Кто-нибудь уже на prewiew 3й студии перекатился?У меня вот регулярно (пару раз в неделю) выдаёт ошибку что не найден AndroidSDK (не отображается logcat). При этом командами грейдла всё собирается и устанавливается ок. А вот запустить на телефоне из студии кнопкой play не выходит.Потом хуй знает от чего (чищу все кеши, чищу бинарники) оно включается. А иногда всё то же самое делаю и нихуя.Кто-нибудь мб знает хотя бы, отчего это происходит? В гугле ниче не нашел.
>>1033448Хз, пользуюсь со второй канарейки и только проблемы с инстан раном были, а так норм всё.
>>1030496Линтер в твоем случае прсото предупреждает что тенюшки/финтифлюшки не будет. Обычно саппортноу библиотеки хватает, но есть случаи когда сторонние лучше, просто пробуешь сапортной, а если не вшыло идешь на Android Arsenal.
>>1033384Мне кажется ты вместо например gsonовской фабрики адаптеров вставить свою, и в момент получения выворачивать данные в какую-нибудь структуру вида: Either<Data, Error>, где Data это нормальный тип, а в error ты сваливаешь все данные по HttpException/IOException/JSON своих статусов.
>>1033534Но ведь GsonConverterFactory не вызовется HttpStatus 422.
>>1033576>не вызовется при HttpStatus 422
>>1033576Ну значит я обосрался.
>>1030492 (OP)Куда шапку проебали?
>>1033334>твой косяк что твой сервер ошибки но кодом 2xx возвращает (это вообще вотзефак).Это норм, если кастомное решение. С таким способом можно вообще довольно годно свои ошибки обрабатывать, написав всего лишь свою обертку над колбеками.
>>1033614Нахуй иди со своей шапкой.
Слава богу больше нет всратой шлюхи на оппике.Аноны, как обычно кодят такие ситуации, когда можно переключать отображение списком и гридом.В спиксе у меня номер айтема, описание и еще пару текстовых хуиток, а в гриде только цветной квадрат с номером.Писать два разных адаптера и переключать их при переключении отображения или есть какой-то более идеоматик путь?
>>1033664Используешь RecyclerView, которому можно менять LayoutManager. Вместе с лэйаут менеджером можешь либо адаптер менять (адаптеры с разными вьюхами), либо внутри адаптера предусмотреть логику, что бы по изменению стиля использвоались другие вьюхи, а холдеры анрмиер оставить те же.
>>1033676Ясно, в общем я так и думал делать, но на всякий уточнил.
>>1033638Нет, ты.
Анон, я воюю с одним и тем же багом уже недели три, облазил весь StackOverflow в поисках ответа, но ничего не помогает, может хоть ты подскажешь.Делаю свой простенький браузер чтобы впечатлить hr-ов и заказчиков. Вкладка у меня реализована как фрагмент Tab, где есть TabControlFragment (кнопки назад-вперед, адресная строка) и WebView. Когда я в первый раз вбиваю в строку адрес, он все нормально грузит, но когда я пытаюсь еще раз ввести адрес из строки, то ничего не происходит - текущая страница тупо обновляется, а в логах влезает такое сообщениеW/BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid. Но самое смешное, что этот баг есть только когда я тестю на устройствах, в Genymotion все работает нормально! Это самый пиздец и самое обидное.Анон, я правда в отчаянии, помоги.Вот код на гитеhttps://github.com/TheKlash/Cherry/blob/master/app/src/main/java/ru/alexeypopov/cherry/presentation/fragment/Tab.javahttps://github.com/TheKlash/Cherry/blob/master/app/src/main/java/ru/alexeypopov/cherry/presentation/fragment/TabControlFragment.javahttps://github.com/TheKlash/Cherry/blob/master/app/src/main/java/ru/alexeypopov/cherry/presentation/client/CherryClient.java (на всякий случай, свой WebViewClient)
>>1033881Да, еще, когда я на устройстве перехожу по гиперссылке, то все ок и все нормально грузится.
>>1033881Пиздец у тебя там говнокод. Я удивляюсь, как там вообще хоть что-то работает.> чтобы впечатлить hr-ов и заказчиковС этим проблем точно не будет.
>>1034071Разбери подробнее, пожалуйста.
>>1034084 public App getInstance() { if (instance == null) instance = new App(); return instance;}за такое вообще надо руки отрывать.1. Application создаётся и пересоздаётся системой, а не тобой. new App - это пиздец на уровне new Activity или new Fragment с параметрами.2. Application можно всегда получить через getApplication.в твоём случае при каждом пересоздании Application будет новый, соответственно и "синглтон" instance будет новый (причем не являющийся настоящим application).
>>1034071Лол, ты не тот репозиторий смотришь
>>1034167>instance = new App();Вот тут то я и обосрался.
>>1034167>>1034084ещёв конструкторе ты присваиваешь context = getApplicationContext. если задуматься, что происходит - ты инициализируешь поле класса ссылкой на самого себя (т.к. getApplicationContext и вернёт инстанс твоего Application - лол!). А это эквивалентно context = this, что нахуй не всралось, как и твой метод getContext.При том что у тебя есть типа синглтон аппликейшна (который на деле не будет синглтоном) использовать статик для табменеджера - это вообще эпик. нафига вообще синглтон-то тогда делал для App?C volatile вообще проиграл. Поясни, зачем? зачем ты это сделал? Правда интересно узнать.Теперь смотри как надо.Application - синглтон по своей сути. Он всегда живой если у тебя есть хоть чтото в приложении, т.к. он создаётся перед всем остальным (системой, а не тобой, забудь нахуй про new).Получить его в своём случае ты всегда можешь через (App)getApplication(). Он же является контекстом приложения (разберись мб что такое контекст? андроид с этого начинается.).От всего твоего App останется:public class App extends Application{ private TabsManager tabsManager; @Override public void onCreate() { super.onCreate(); tabsManager = new TabsManager(); } public TabsManager getTabsManager() { return tabsManager; }}Прошёлся по твоим остальным классам - там сходная хуйня (например CherryClient). Вообще это bad practice делать статик-синглтоны в андроиде,т.к. всегда есть Application, и оно для этого. Там же и состояние всего можно загружать из дб или преференсов.
>>1034188Мне кажется что в аппликейшене ещё и табманагер не нужен. А всё от чего? От того что ВКАТИТЬСЯ.
>>1034191Нет, как раз в апликейшене, я думаю, ему самое место. Раз Application это синглтон сам по себе, то TabsManager, в котором будет храниться состояние вкладок, лучше держать там.Ну а если я не прав, то тогда где?
>>1034199в компоненте даггера.
>>1034191>>1034199>в аппликейшене ещё и табманагер не нуженНу в лоб варик что аппликейшн и должен это всё хранить. И называться не App, а как-нибудь BrowserApp.>От того что ВКАТИТЬСЯ.Пикрил-девелопмент. Особенно клёво когда начинают MVC/MVP делать с таким уровнем.
>>1034203я имею ввиду хранить список табов, и менять их.
>>1034203я считаю что апликейшн нужен сугубо чтобы инциализировать всякого рода хуйню вроде крашлитиксов, лицокниг и прочих либ которые нуждаются в контексте. А учитывая что этот табманагер не нуждается в контексте, то его можно вынести куда нибудь в компоненту даггера и тупо инжектить синглтоном куда надо.
>>1034200>>1034207Окей, я понял про даггер, спасибо хотел отложить его на попозже, но видимо без него никакЯ пофиксил ненужные синглтоны, но баг все-равно остался. Все так же не хочет менять страницу если вбивать в строку, но по гиперссылкам переходит.
>>1034211Делай как хочешь. Я просто даггероёб.
>>1034211я твоё этсамое запустил. в 100% случаев ловлю багу в onResume:07-30 00:13:56.542 24759-24759/ru.alexeypopov.cherry E/AndroidRuntime: FATAL EXCEPTION: main Process: ru.alexeypopov.cherry, PID: 24759 java.lang.RuntimeException: Unable to resume activity {ru.alexeypopov.cherry/ru.alexeypopov.cherry.presentation.activity.MainActivity}: java.lang.IllegalStateException: Fragment already added: TabControlFragment{77b46fd #1 id=0x7f0b0076} at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3844) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3885) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) Caused by: java.lang.IllegalStateException: Fragment already added: TabControlFragment{77b46fd #1 id=0x7f0b0076} at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1679) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:726) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388) at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:499) at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:172) at android.app.Activity.performResume(Activity.java:7125) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3821) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3885) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) Разберись сначала с тем как фрагменты добавляешь и их жизненным циклом, и вообще жизненным циклом всего в андроидах.Про даггер - можно и без него, у тебя ща не те масштабы чтобы об этом париться (да и рано тебе явно пока).Лучше бы про интерфейс запарился - больше бы впечатлило когоугодно, твой код всё равно никто разбирать скорее всего не будет.
>>1034217Вообще ни разу этого бага не было. Что ты такое вообще делаешь, что он появляется?
>>1034221Приложение без изменений из репозитория - блокирую экран, перезапускаю.при этом отрабатывают onResume у MainActivity. И как ты мог догадаться (если бы понимал про жизненные циклы компонентов) - создание и onResume текущего фрагмента.который Tab.onResume:activity.getSupportFragmentManager().beginTransaction() .add(R.id.tab_control_container, controlFragment) .commit();который уже добавлен. короче еще один метод у тебя, где хуйня написана. непонятно вообще, что оно у тебя в onResume делает.
>>1034222>Tab.onResume:самофикс - создание ИЛИ resume
>>1034222Так, эту херню я понял. Её нужно было закинуть в onActivityCreated (я не дурак, знаю lifecycle и то, что onResume запускается при каждом возобновлении, просто я зачем-то это сделал, когда уже начал в бубен бить)Сделал комит, теперь попробуй
>>1034224ага, пофиксил, работает.теперь поясни ещё раз про свою багу:>в первый раз вбиваю в строку адрес, он все нормально грузит, но когда я пытаюсь еще раз ввести адрес из строки, то ничего не происходит - текущая страница тупо обновляется, а в логах влезает такое сообщениеточнее, 1. что делаешь. 2. что ожидаешь что произойдёт. 3. что по факту произойдёт
>>1034225Сначала я в первый раз ввожу адрес страницы в строку и все нормально загружает. Затем1) Далее я меняю адрес страницы в строке2) Ожидаю что загрузится новая страница3) Загружается та же самая
>>1034227> Далее я меняю адрес страницы в строке и жму OKФикс
>>1034211Какой двач добрый стал, удивительно. Раньше бы его обоссали, а сейчас помогают. Даже в js-тред никто не отправил.
>>1034227ну хз, прошёлся отладчиком по твоей схеме на железке - у меня на сосунге гелакси ок всё и с отладчиком и без.рекомендую и тебе под отладчиком прогнать с точки listener.onAdressChanged(address) и посмотреть чего у тебя там меняется.вдогонку по коду не понял вообще:1. зачем тебе CherryClient.shouldOverride.... - ты там нихуя полезного не делаешь кроме дефолтного поведения - может быть потенциальным источником твоей баги. Метод подразумевается что ты как-то иначе будешь со ссылкой работать чем по-дефолту, и возможно по-дефолту там больше делается в итоге чем у тебя. Жопой чую что твоя беда отсюда.2. зачем не в xml-лайаутах TabControlFragment.onCreateView:backButton.setText(R.string.button_back); refreshButton.setText(R.string.button_refresh);forwardButton.setText(R.string.button_forward);adressEditText.setLines(1);
>>1034236Ладно, анон, спасибо что не проигнорил!Я хз на самом деле, просто и на Galaxy Tab A смотрел и на Xiaomi Redmi 3S смотрел, одна и та же хуйня была, но ты обнадежил что у тебя все работало.А у тебя какая версия ведра стоит?
>>10342361) Без shouldOverride он при загрузке страницы открывал WebView на полный экран.2) Я хотел как-то прописать рессурсы с помощью Butterknife, потом понял что так не получится и чот забил.
>>1034234сегодня сам поможешь, завтра тебе помогут. да и временами лучше чем картинки скроллить прокрастинируя.>>10342377.0, но ты всёравно отладчиком бы прошёлся.
>>1034240Может это немного нагло, но можешь, пожалуйста, стать моим ментором?
>>1034238>Без shouldOverride он при загрузке страницы открывал WebView на полный экран.больше похоже на багу компонента. ожидаемое поведение же не такое должно быть.у меня кстати ок и без оверрайда shouldOverrideу тебя в итоге от shouldOverride чето неявное происходит, что ты не контролируешь, и в итоге имеешь вероятность новую багу породить закостылив старую. ну а так хзче у тебя на самом деле творится.
>>1034242А ты сосешь хорошо?
>>1034245В гей-шлюхи мне еще рано, сначала хочу вкатиться
>>1034247Скинь свою фотку, я подумаю.
>>1034242лолнет, спасибо конечно.судя по тому какие вопросы ты задавал в марте и тому что задаёшь сейчас у тебя сильного прогресса с тех пор не случилось. и по уровню кода тоже. а почти 5 месяцев - это дохуя, можно было и норм в основах разобраться - делаю вывод что жопа у тебя не горит по теме - значит тухло браться.>1. Java, самую малость Android.>2. Закрепить Java, дотянуть Android до джунского минимума, попрактиковаться в гите.На джунский минимум тебе базу андроида понимать надо на автомате - контексты, жизнециклы, интенты, сервисы. Заебок еще если разобраться тем что на уровне ОС этому соответствует. Ну и жаву чем лучше - тем лучше.Фреймворки дрочить без понимания этого - путь в никуда.Олсо в андроиде, уже писал раньше - джуны не нужны, рыночек перегрет вкатывальщиками - либо целишься на мидла с соответствующим уровнем.
>>1034249либо ты нахуй не нужен и иди в энтерпрайз жаву, там так-то по сути меньше требований чем на андроиде, и спрос на джунов выше
Анончик, можно нубский вопрос? В фреймворке есть метод "Class<Base> foo()", мне нужно переопределить этот метод в своем классе так, чтобы возвращать Class<Derived>. Это можно как-то сделать не изменяя код фреймворка?http://rextester.com/LRA47158
>>1034250Вот именно по энтерпрайзу у меня и не горит жопа
>>1034251Относледлваться от Base если только.
>>1034253так он и отнаследован - см. ссылку на rextester
>>1034249А к мидлам какие требования?
>>1034255Быть няшным и уметь хорошо сосать.
>>1034256А если серьезно? Да, я за пять месяцев не особо продвинулся, но мне деваться некуда уже. Через год я выпускаюсь, а работы до сих пор нет. Если не найду работу до следующей осени, родители обещали выгнать из дома. Так что если мне теперь и идти, то только вперед.
>>1034257>>>/pr/1030264
>>1034255.я не представляю как можно не вкатившись куда-либо подняться за год до уровня мидла.>Да, я за пять месяцев не особо продвинулся, но мне деваться некуда ужене продвинулся - значит тебе это не надо было.>Через год я выпускаюсь, а работы до сих пор нетфрилансуй, бегай по собеседованиям, делай тестовые задания, книжки читай, бухай поменьше, курс по андроиду на курсере пройди все части, что еще сказать.
>>1034188>C volatile вообще проиграл. Поясни, зачем? зачем ты это сделал?Бамп вопросу.Мимо
>>1034394Скорей всего из-за спизженой реализации синглтона, в которой подразумевался доступ из разных тредов. А то что такого по факту здесь нет, и вся работа онли из UI-треда - дак похуй же.Мимо-2
>>1034261>фрилансуй, бегай по собеседованиям, делай тестовые заданияВи таки говорите будто бы начать фрилансовать на андроед проще чем устроиться джуном.
Двач, использую обычный viewpager т.е. он создает вьюхи, а не фрагменты. Как заставить его пересоздать все вьюхи? Т.е. чтобы для каждой вызвался instantiateItem.
А на Xamarin у меня получится вкатится в андроид разработку, джаву просто лень учить а сишарп так вроде знаю чутка?
>>1034866Разобрался. Если кому интересно - решается переустановкой адаптера.pager.setAdapter(null); pager.setAdapter(adapter); Ну и сохранить позицию выбранной вкладки, а потом установить ее опять т.к. обнуляется.
>>1034869Нет.
>>1034869>джаву просто лень учить>сишарп так вроде знаю>подразумевая, что с сишарпа переход на жабу будет сложенНе лезь дебил сука ебаный.
>>1034896а можно вызвать просто notifydatasetchanged
>>1035172Нельзя.
>>1035251Ещё как можно
>>1035299Нет.
>>1035363Тяжело, наверное, быть тупым
Котаны, есть кто на райзене сидит? Как студия себя ведёт? Нету каких-либо значимых проблем?
>>1035536На чем?
При удалении элементов из ресайклервью с notifyItemRemoved(position) не меняется размер ресайклервью. С notifyDataSetChanged() меняется, но пропадают анимации. Как мне заставить ресайклервью уменьшаться при удалении элементов через notifyItemRemoved?
>>1035546AMD Ryzen
>>1035579Эмулятор тормозить будет
>>1035608Лечение есть?
>>1035651Есть. Intel
>>1035430Да, но нельзя я говорил с позиции того долбобоба который рессетил айтемы в одоптере
>>1035561Попробуй requestLayout после обновления списка вызвать. хотя не уверен что поможет
Пацаны, кто-нибудь в Facebook собесился?
>>1036048Нахуя? Чтобы их трехсотмегебайтное говно на react nativ'е ковырять? Тут таких ебанутых нет.
Есть ли смысл вкатываться(из девопсов) в девелопмент? и Берут ли жуниоров на удаленку?
Какой сегодня есть человеческий способ послать емаил с вложением, не пердолясь с Intent.ACTION_SEND и "message/rfc822"?
>>1036152Конкретно не устраивает, что "message/rfc822" выдает всякие скайпы и блютузы, а Intent.ACTION_SENDTO без этого эффекта не позволяет прикрепления.
>>1036146Нет.
>>1034071Вопрос к местным помидорам.Адекватно ли джунам на собеседовании давать код как на том пикрилейтеде, чтобы ошибки указывали, или таки перебор?Спросил напримере у пары знакомых андроид-макакеров - максимум половину проблем выявили.
Господа.Хочу вкатиться в андроед. С чего начать? Для простоты предположим, что я знаком с Джавой
оп
>>1036915По-моему плохая идея. Это как раз тот случай, когда переписать с нуля самому проще, чем сидеть и пытаться догадаться, что же вообще хотел написать автор.
>>1037010Начни с php
>>1037010Читай шапку, всё написано.
>>1037344))))
НЕПОНИМАТSELECT * FROM table WHERE (column1, column2) = (1, 2)Почему в JDBC SQL-запрос выполняется успешно, но валится на адроиде с 'near "," syntax error' ?
>>1037410Первый раз вижу такой синтаксис.WHERE column1=1 AND column2=2При этом эти значения нельзя подставлять тупо через конкатенацию, должна быть либа для prepare stateent
>>1037460Про AND я уже понял, хотя и странно, что первый вариант с jdbc работает.А насчет конкатенации - это проблема, когда подставляются элементы, которые вводит пользователь. А еще зависит от типа приложения. Кому вот нужно проводить SQL-инъекцию в приложении с календарем бабских мурмусиков?
>>1037473А еще в prepare statement нельзя подставлять имена таблиц или столбцов, например.Так что проблемы инкапсуляции от отличии от простой конкатенации оно не особо решает.+ в теории может быть более медленным, если используется всего один раз. А запросов может быть много подряд разных.
>>1037189Сходи нахуй.>>1037344ущий> Стоим велосипеды на костылях, пока грейдл недовольно урчит, делимся фреймворками. Очкастой бабы на превью больше не будет.> SON YOU ARE A DEVELOPER NOWХорошая шапка. А вкатиться-то как?
>>1037733Книг нормальных на русском почти нет - отдельные главы из разных ок, остальное хуйня и старье. Платные курсы по андроиду лично - говно де-факто. Придётся много шуршать по стековерфлоу, читать гуглогайды и рандомные статьи, пока не привыкнешь и не начнешь думать что так неплохо. Привыкание возможно случится при регулярном обмазывании где-то через полгода - тогда мб чето начнешь понимать чтобы собеседоваться на джуниора.Можешь еще курсик с курсеры глянуть - на ютубе все видео есть.Если не пропрёт - это не твоё и не вкатывайся, плес.
Котаны, очень хочется высказаться, меня в усмерть заебал грейдл.Выть охота, когда конфигурирую эти ссаные скобочки.Ни гайдов ни примеров нормальных, нихуя.На одной версии одно говно, на другой другое, у тебя третье, плагин обновлять, версию писать и ебаная динамическая типизация блядь нахуй нахуй блядь АААААААААААААААААААААААААААААААААА.Неужели это лучшее что смогло придумать человечество за 10 лет разработки костылей для андроида?И вопрос к знатокам - что прописать чтобы запустить таску, чтобы она выполнилась автоматически ПОСЛЕ ВСЕХ выполненных (независимо от того что выполнится) - будь то компайл, билд или клеар или любая другая для данного проекта, например?
>>1037786> чтобы собеседоваться на джуниораМне нахуй не нужно собеседоваться на джуниора. Я вполне себе сеньор-серверсайд. Так что интерес скорее "для себя", и мне интересно узнать, какие доки / мануалы / ресурсы смогут объяснить всю эту андроид-джава-инфраструктуру. Желательно без "смотрите, ребята, это называется класс..."
>>1037799Так бы и сказал.На хабре 4 более-менее ок статьи для обзорного понимания концепций.https://habrahabr.ru/post/140459/https://habrahabr.ru/post/140655/https://habrahabr.ru/post/141201/https://habrahabr.ru/post/141504/Потом берёшь книжку HeadFirst по андроиду, пропускаешь главы про классы и смотришь только на структуру приложения. Если не дебил - за день пролистаешь и сделаешь первое приложение, потом гуглируешь то что не понимаешь и углубляешь.А так более основательный обзор с точки зрения ОС:-Танненбаум - операционные системы поновее издания - глава про андроид.-Про концепты безопасность в андроидах - книжка - https://www.nostarch.com/androidsecurity
>>1037818О. Годнота пошла. Мне бы еще про работку с графикой, желательно без всяких тяжеловесных юнити. Но это я уже так, вредничаю. про то как устроен Андроид - интересно, но малополезно. Мне не интересно каким образом там вызовы из Джавы маппятся в сисколлы, сириусли.
>>1037826>Мне бы еще про работку с графикойДля игор и триде я понимаю?OpenGL из коробки есть https://developer.android.com/training/graphics/opengl/index.htmlЛоулвл на C/C++ оптимизируют, если планируешь байтоёбить смотри в сторону Android NDK.
>>1037840Первая ссылка отвалиласьhttps://developer.android.com/guide/topics/graphics/index.html
>>1037840Нет, тридэ как раз не нужно. Обычная плоская графика с няшными эффектами. Но да, спасибо за первую ссылку. Буду вкуривать. Может, если все пойдет норм, выдам через определенное время простенькую логическую игрулину.
>>1037799>сеньор-серверсайдТак бы и сказал - php-говноед.
>>1037788>https://stackoverflow.com/questions/30857350/gradle-execute-task-after-build
>>1038268Как после конкретной таски сделать и так ясно.Мне не после build'а нужно, а после ЛЮБОЙ таски проекта которая была бы вызвана.
>>1038373Нахуя?
Смотрю темы ведра в исходниках и вот никак не могу понять, где искать описание для всех атрибутов в темах? Вот видишь наример в теме: colorBackgroundFloating, actionModeCutDrawable, или еще какую хуйню. И что делать? Вот тут https://developer.android.com/reference/android/R.styleable.html не все можно анйти например, аттрибута controlBackground там например нет.
Где-то в официальной документации видел, что создание постоянно висящего и неудаляемого уведомления в шторке - предотвращает убийство свернутого activity.А сейчас не могу найти ссылку.Помогите, плиз, котаны.
>>1038731Не было такого никогда. Ты с foreground service путаешь.
>>1038735>foreground serviceНу да, видимо, оно.Но вот беда, у меня есть кусок кроссплатформенного кода (таймер, который должен работать всегда).Кроме службы переднего плана нет иных способов гарантировать, что сворачивание приложения его не прихлопнет?
>>1038740Юзай AlarmManager + WakefulBroadcastReceiver (до лоллипопа) / JobScheduler (после лоллипопа)
>>1038757Слишком пердольно и вообще не то. Это игра, и через какое-то время должно что-то произойти, причем отсчет ведется визуально. Не хочу пидорасить реализацию, она не должна зависить от платформы. Максимум - запускать пару платформоспецифичных методов.То есть, сам поток с таймером менять низя.https://medium.com/google-developers/who-lives-and-who-dies-process-priorities-on-android-cb151f39044fВот тут я читаю, что приоритет - не распространяется на отдельные компоненты, но на весь процесс в целом.Это правда? Если да, то означает ли это, что foreground service повышает приоритет и свернутого activity? Если так - можно в момент старта таймера запускать этот процесс, который просто делает холостую работу. И по окончанию таймера вырубать.
>>1038771https://developer.android.com/guide/components/processes-and-threads.html?hl=ru>Процесс, необходимый для текущей деятельности пользователя. Процесс считается процессом переднего плана, если выполняется любое из следующих условий:...- Он содержит службу Service, которая выполняется "на переднем плане", — службу, которая называется startForeground()....То есть, в теории, даже свернутые activity с такой службой - должны выживать.
>>1038469чтобы прибить некоторое дерьмо, которое было скопированно на одном из этапов сборки и использовалось на нескольких (разных) местах дальше.ведь должно же быть что-то типа myOhuennyTask.mustRunAfterAllOthers?
Аноны, как абстрагируете работу с вьюхами и тулбаром? Во фрагментах куча всякого говна по инициализации, настройке, подготовке всех вьюх, айтемов для тулбара, обработка нажатий, ясное дело что все это выглядит как говно.
> java.net.SocketException: socket failed: EMFILE (Too many open files)Что это такое? На чистом ведре UDP работало, на MIUI не хочет. У меня вермишели из RxJava, что там могло пойти не так? Отладчиком прошелся - всё нормально, а пакеты не улетают.
>>1039053настройку каждой отдельной хуйни выносишь в отдельный метод и потом просто вызываешь все нужные методы в onCreateView например или ещё где-нибудь, тогда код выглядит довольно таки читабельно, никакой реализации в основных методах фрагментов нет и они получаются короткими и няшными
>>1039054может соединений слишком много создается?
Помогите разобраться с простейшим делом. Есть сервер, на котором имеются видео. Нужно с помощью qraphql брать ссылки на эти видео и подставлять в строковую переменную для дальнейшей обработки. Сервер настроен под данную технологию запросов, т.к. существует вэб-версия, которая работает по этому принципу.Поскольку я новичок, у меня нет четкого представления для реализации данной задумки. Пока я имею один класс с видеоплеером, чтобы показывалось видео, на данный момент существует строковая переменная, где ручками прописывается ссылка на видео. Дальше я не знаю, создавать отдельный класс для осуществления запросов и получать оттуда ссылку, но как? В гайде от разработчиков я не могу разобраться самостоятельно, может кто подскажет?
>>1039322Просто склеивай ссылку с айдишником, или что там. Заем отдельный класс?
>>1039343Не хотелось бы все в один класс пихать.Вот такие данные возвращаются с сервера. Но мне сперва нужно запихнуть ссылку(url) в плеер. Остальное будет реализовываться в дальнейшем, как опыта немного поднаберусь в этом деле.Данные сервера:id, originalName, source, hash, views, url, previewUrl, createdAt, updatedAt
>>1039322когда научишься нормально проблему описывать, тогда и приходи
>>1039351Ну тогда сделай класс модельку в которую парсится респонс со всей этой хуйней и у него метод toUrl
Нормально ли использовать application object для хранения данных для фрагмента? У меня когда активити создает или реплайсит фрагменты, оно устанавливает на фрагменте некоторые проперти(типа mainActivity.startHueta(Hueta hueta){ HuetaFrag huetaFrag = new HuetaFrag(); huetaFrag.hueta = hueta; fragmenTransaction = .....), но при повороте экрана все идет по пизде и я получаю npe. Не хочу использовать вариант с записью модели в бандл т.к. некоторые модели содержат листы с другими моделями, с парой уровней вложенности и я заебусь реализовывать для них parceable.Или хранить данные в appication совсем зашквар?Еще нихуя не понимаю что происходит с фрагментами на бекстеке. Я так понимаю они просто все висят в памяти т.к. все мои фрагменты при возвращении назад нормально отрабатывают, а значит проперти с моделью висело в памяти, но что произойдет при повороте экрана со всеми фрагментами на стеке?
>>1039636совсем зашквар. если у тебя возникают такие проблемы, значит ты делаешь что-то не так
А че вы шапку не запилите?
>>1039636Да, это зашквар. Почему бы тебе не использовать SharedPreferences еще более зашкварный вариант, кек если тебя не устраивает бандл?
>>1039636Да, и про твой вопрос с бэкстэком. Когда ты поворачиваешь экран, твоя activity уничтожается и пересоздается, а значит и фрагменты вместе с ними
>>1039636Google на недавнем IO17 выкатили свои рекомендации по архитектуре приложений, в т.к. и хранения данных, лайвциклы. Самое время начать раскуривать их, Антон. https://developer.android.com/topic/libraries/architecture/guide.htmlПереводы на швабре - https://habrahabr.ru/post/334942/
>>1039676>>1039681Говна наверните, мартыханы. Application - лучшее место для хранения чего-либо нужного много-где.
>>1039710Мы вам перезвоним
>>1039636Попробуй RetainFragment, то есть делаешь отедльынй фрагмент котоырй ретейнится, которому похуй на на повороты, данные пихаешь в него, а потом достаешь.Но вообще почему бы не записать в базу?
>>1039710А давай ты навернешь. Ему нужно хранить не какие-то глобальные настройки прилодения, а текущее состояние одного единственного фрагмента. А то что он делает - сказочный костыль прямиком из Индии
>>1039636Кстати, еще вариант: храни это все где-нибудь в MainActivity
Сосаны, я вот подумул, а на сколько нужно заходить в оптимизации. Вот допустим есть у меня список товаров, ну штук 100. Юзер кликнул кнопочку у товара и количество увеличилось на 1. Надо бы это в базу записать да и карточку товара уобновить. Записываем в базу, потом в другом месте нам прийдет новый спсиок товаров сввапнем адаптер с сохранением вьюшек, или испольузем диффутил, не суть важно. И тут я подумал, а ведь это целые новые 100 объектов, выборка из базы и тд.Может не стоит так делать (для больших коллекций, например списка меседжей наверное точно не стоит), и нужно просто локлаьный списочек поменять и отнотифаить адаптер? Или это экономия на спичках уровня созданяи вьюх в коде, которая спасет хуй процент батареи, хуй килобайт памяти?
>>1039880а что мешает к уже существующим 100 объектам просто добавить ещё один? не пересоздавая 100 объектов, не очень понятна твоя проблема кароче
>>1039890Та я даун просто, который апи нормально не выкупил. Покопался и нашел что можно не весь список мониторить с определенной выборкой, а изменения по таблицам с кастомными тегами (речь про StorIO). Это сняло весь вопрос, по крайнемере для меня.Вообще вопрос если его переформулировать и смержить с новыми данными может выглядеть следующим образом:Как (точнее когда) "лучше" изменять данные в адаптере:1) Как только пользователь что-то поменял, сохраняем изменения в адаптере и пстфактум пишем в базу;2) Как только пользователь что-то поменял, пишем в базу, получив результат записи отображаем изменения;3) Как только пользователь что-то поменял, пишем в базу, в другом месте где обсервим базу получаем информацию об изменениях, достаем из базы как надо и отображаем изменения;Возможно разница не совсем понятна, попробую привести псевдокод: https://pastebin.com/YLyDJQRp
>>1039921часто писать в базу это дорого по идее, мб лучше записывать в базу уже после того как пользователь всё сделал? а до этого просто писать в адаптер
>>1039946>мб лучше записывать в базу уже после того как пользователь всё сделалА если нет "конца", вот он закрыл приложуху и что, весь твой адлаптер пропал, нет кнопки сохранить. Почему ты решил что дорого?Тем более вот другая ситуация, список сообщений в чате, приходят они в сервисе по сокету, соответственно писать ты можешь только в базу, а оттуда уже пихать в адаптер и аллаха.
Гайз, подскажите неофиту как можно реализовать передачу статусов смс-сообщений пхп файлу? который потом передаст их в бд
>>10402111) Получаешь разрешение READ_SMS2) Читаешь спсиок смск3) Достаешь их статусы4) Отправляешь их серваку, дальше пусть сервак ебется с ними
Есть какой то встроенный механизм, которым я могу ограничить количество отображаемых символов в текстовых полях чтобы при превышении лимита оставшиеся символы заменялись троеточием. К примеру задаю ограничение на 10 символов и какая-нибудь длинная надпись будет отображаться как "Длинная на..."
>>1040322android:ellipsize
Привет двощ! Начинаю вкатываться программинг на андроиде, прочитал приличное кол-во мукулатуры, остались вопросы. Можно ли где-то найти годные курсы (на коммерческой основе), с обратной связью, чтобы я мог задать свои глупые нубские вопросики?
Сап, ебусь в глаза и второй день ебу как перенести это на рельсы RX. https://pastebin.com/wjbpRK5dstart() - делает запрос в сеть и если все плохо запускает delayedLaunch()delaySec - сколько секунд выжидать между запросами
>>1040601пиздец блять, что за велосипед, не проще это переделать нахуй? если у тебя запрос в сеть, то просто юзай ретрофит, он тебе всё нормально сделает, нахуй тебе эти задержки руками делать?
>>1040606Я и переделываю) Ебаный сервак как всегда. Есвенно запросы в ретрофите.
>>1040656И плюс надо апдейтить значение секунд во вьюхе
>>1040601забей, это не твоё
Здравствуйте, уважаемые, хочу у вас узнать, есть ли какой-то, грубо говоря, конструктор (по типу C++ builder), хочу запилить для одного сайта маленькую приложуху на телефон. Java знаю на уровне хеллоуворлда, C# знаю средне, так же С++, знаю на достаточном уровне Python.
>>1040571На udemy должно быть.Или взять наставника на фл.ру
>>1041055Формочки ты допустим сможешь натаскать в той же Android Studio, но не окунувшись в говно ничего не выйдет.
>>1040571https://habrahabr.ru/post/328888/
Кто-нибудь уже юзает room? Что-то я совсем не понмаю как организовать отношения между сущностями т.е. если какая-то сущность содержит в себе массив других сущностей. Как это реализовать? Хранить в модели массив айдишников этих других энтитес, а в кастомном геттере загружать эти энтитес через dao и опционально кешировать?
>>1040776Почему? Мне вожно лишь понять можно ли как то этот кусок: https://pastebin.com/Tcta8aA1 распихать по рх-операторам. Заменить хендлер на Обсервабл с задержкой и самовызовом внутри и мартышка может.
>>1041358>этот кусок: https://pastebin.com/Tcta8aA1если это написал ты, то забей, это не твоё
>>1041194> но не окунувшись в дерьмо Все так плохо, что-ли?
>>1041502Ну а ты что хотел? Моб разработка это что-то уровня фронтенда
>>1041532Хотел как в питоне. Написал одну строку = сделал запрос на сайт. И прилепить эту строку к кнопке какой-то.
>>1041579Не будет, твердо и четко. Здесь не браузер и не бекенд, это вам не скрипты писать. Твои строчки здесь порвут на милионные простыни, это мать ее джава.
>>1041606Звучит опасно.
Короче поябался с room, вроде годная вещь, в сравнении с пердолингом на голых SQLHelperax, но я нихуя не понимаю как смоделировать one to many и many to many.(со сложными, связанными данными не работал)В примерах @ForeignKey используется для ссылки на одну entity. А что делать если у меня условный класс User cодержит List<Comment> comments, а у другого есть поле Map<User, Role> roles. Как такое мапить?
>>1041626разберись для начала с бд, нарисуй схему, это тебе не ебаный realm
>>1041412Что не так?
>>1041893Если про сам свитч то хуйня, вот повравил. Но один бес, как его можно на операторы рх попилить?
>>1041894Вот поправил: https://pastebin.com/A5FYqNdZ
Как более комфортно вкатиться в андройд? Около трех месяцев копаюсь в джаве по классам, исключениям, процедурным и вот начинаю многопоточность, а следом и коллекции пойдут. Стоит ли мне засиживаться на Swing и тому подобных библиотеках и еще более детально прорабатывать сам язык? Или уже стоит после моего мини-курса начинать углубление в андройд, попутно почитывая за чашкой чая Брюса Эскеля?
>>1041998книги не нужны, самый эффективный способ это просто взять и начать писать код, иначе будешь ещё хуеву тучу лет сидеть за своими книжками, а толку нихуя
>>1041998> Или уже стоит после моего мини-курса начинать углубление в андройд, попутно почитывая за чашкой чая Брюса Эскеля? This.По яве тебе главное надо знать классы, наследование, интерфейсы, внутренние класы, анонимные реализации. Статик поля\функции. Основные интерфейсы коллекций типа list, map, set и отличия реализаций. Немного io, без сильного углубления в детали. Обработку исключений, и самую базовую многопоточность. Если это более-менее знаешь - можешь закатываться. Кроме явы еще желательно знать что такое колбеки, паттерн observer и singleton, xml, json(без подробностей стандарта, а в общем что такое и как пользоваться.) Немного основ сетей(реквесты, респонзы, http(s), клиент-сервер)swing тебе нахуй не нужен, даже не притрагивайся. А вообще не знаю какой там у тебя темп, но 3 месяца для классам, исключениям, процедурным(это вообще что?) и вот начинаю многопоточность, а следом и коллекции пойдут это чет дохуя. По нормальному основы java за месяц с нуля осваиваются, если занимаешься хотя бы по 1-3 часа в день.
>>1042038>c нуля без бакгроундафиксоуточнение
>>1042034типичный васян из быдлоконторки
>>1042045лол, тогда ты - типичный вкатывальщик с двочей
>>1042034Хз, я перекатывался(до этого знал малось джава кор(олимпиадник), алгоритмы да паттерны) прочитав Head First и Big Nerd Ranch. Правда на это ушло 3 недели во время рождественских а не 3 месяца. Потом пару месяцев кодил всякое и учил фундаментальные либы - рх, даггер и проч. Уже пол года работаю в продуктовой компании на одно маленькое и богатое государство)
>>1042050да ладно тебе, не агрсиь, тупой кодерок
>>1042051ну так блин, одно дело быстренько пролистать какие-то книжки и потом начинать кодить, а другое дело 3 месяца сидеть читая какую-то хуйню и собираться ещё столько же продолжать читать
>>1042051На какую зп вкатился? Сколько проектов было? Город?
>>1042062Зп 250, ДС3, на собеседовании два своих небольших приложения показывал
>>1042066250 долларов?
>>1042081Ударов плетью.
>>1042089Чет совсем маловато, я б уже лучше борщи хлебал. А что за небольшие прилаги были, опиши функционал?
>>1042038спасибо добрый анон.
>>1042038>самую базовую многопоточность. И как часто многопоточность встречается в андройде?
>>1042099Ну скажем, везде
>>1042099В любом приложении не хелоуворде будет.
>>1042099Везде, но там в большинстве случаев используются свои абстракции и свои "паттерны использования".
>>1041691Так с бд я знаю как это происходит. Если one to many, то в тех entity, которых many создается поле с айдишником родителя. А если many to many - то создается промежуточная таблица с отношениями idEntity1-idEntity2. Но я в room нихуя не понимаю как запихнуть. Все статьи кастрированные с простейшими моделями. На commonsware судя по заголовкам все что мне надо разбирают, но для полной статьи надо их книга за кровавые доллары.https://commonsware.com/AndroidArch/previews/room-and-relationsЕсли у тебя есть какие-нибудь более подробные стати или знаешь опенсурс приложения, которые юзают room - поделись. с меня лучи магии дружбы.
>>1041412Но я ради денег, спок
>>1042066пиздец, пол года за 250, нахуй так жить
>>1042206Снимаю вопрос, все таки набыдлил то что было нужно.
>>1042066За 250 пиздабол. Киев, 700, собес был первый вообще в жизни, конкурс после тестового челов 25+
>>1042062Я здесь >>1042394
https://youtu.be/Q_NhEhjkOy8https://youtu.be/bZKw9rYuMOw
>>1042490Пиздец, ебать я не в тот тред запостил
>>1042299ну тогда поделись, вдруг кому пригодится
Господа, поясните нубу как выищете инфу по необходимому вам вопросу? Вот мне, например, необходимо отправить смс из под моего приложения так, чтобы оно сохранилось в дефолтном смс-менеджере, но информации по этой части нихуя нету ну или я аутист - все попадающиеся статьи, как правило, связаны просто с отправкой смс с помощью метода по типу SmsManager и т.п.Помогите дауну, плз.
Привет аноны, у меня давно назрел вопрос о тестировании, и я так и не нашел ответа. У меня есть приложение, которое взаимодействуе с таким же приложением на другом устройстве, то есть Р2Р взаемодействие. Взаимодействий довольно много и я заебываюсь все это тестить вручную, есть ли возможность забацать какие-то тесты - сценарии (наверное два набора, один для сендера и второй для рессивера), на Эспрессо, чтобы они запускались на двух устройствах одновременно и комуницировали между собой, ну и падали если ассершены не сработают. Я понимаю что они будут "флэки", но возможно сделают мою жизнь немножко проще, да и сама идея тестирования Р2Р интересна.
>>1042700и н т е н т нтентhttps://stackoverflow.com/questions/2372248/launch-sms-application-with-an-intent
>>1042842просто мокаешь второй девайс и тестируешь как нормальный человек
>>1042540Да там говнокода много, я потом вкину, когда будет получше. Но суть в том, что все делал вручную. Сначала отрефакторил модель чтобы не было many to many. А там где one to many создавал в модели "many" поле на id "родителя". one to one тоже самое.И написал функцию в классе базы, которая сохраняет не только родительскую модель, но и все зависимые. И такую же, которая загружает модель, все зависимости, а потом устанавливает эти зависимости.Причем foreign key применить не получилось потому что есть модели, которые хранят ссылку друг на друга и при сохранении получается этакий deadlock т.к. в базе еще нет нужных айдишников.Массивы и другие поля с примитивными данными конвертировал в json строку через TypeConverterы и сохранял как текстовое поле, соответственно при загрузке json парситься обратно в нужную структуру.Доки и примеры везде кастрированные с простейшими моделями. Более-менее нормальные примеры нашел только у commonsware https://github.com/commonsguy/cw-androidarch
>>1042905>просто мокаешь второй девайстогда выходит, что я мокаю свой механизм соединения и тестирую только UI, а мне важно протестировать само соединение, что девайсы действительно коннектятся и передают данные друг другу, это наверное было не совсем ясно с мого вопроса.
Анансы, кто на каких девайсах тестит всю хуйню?
>>1043204На самсунге, на хуеми, на мейзу и на леново.
>>1043204sonyпотому что только они есть
Какое минимально окружение нужно для сборки приложения?Есть проект (из студии), его периодически кому-нибудь надо собирать. Собирается gradle и скриптами.Насколько я понимаю. нужно только сдк. На девелопер.андроид.ком оно только вместе со студией, а она нафиг ее нужна. Как стащить только необходимое для сборки?С установленным сдк тоже есть проблемы: надо принять лицензионное его соглашение (а гуй в студии) и указать путь к нему в local.properties.Как это все автоматизировать? CI же наверняка для андроида пилят, как там эти проблемы решают?
>>1043679Jenkins
До чего ублюдская среда. Ебаный день выпиливаю лампочки, подсветки, полоски, подчеркивания, зачеркивания. Вся суть андройда в официальной ИДЕ
>>1044617Раньше было лучше?
Error:Conflict with dependency 'junit:junit' in project ':app'. Resolved versions for app (4.10) and test app (4.12) differ. See http://g.co/androidstudio/app-test-app-conflict for details.Анончик, помоги! Нихуя не могу найти, как это пофиксить.В dependencies build.grandle (Module:app) у меня это:compile 'com.android.support:appcompat-v7:25.1.0'compile 'com.android.support:design:25.1.0'testCompile 'junit:junit:4.12'Что это мразоте не нравится и как это обуздать? Откуда вообще это 4.10 говно взялось?
>>1044839Хотя, таки нашел.Нужно добавить compile 'junit:junit:4.12'
>>1044804в еклипсе да
>>1044841> compile 'junit:junit:4.12'Хуевая идея, нахуй тебе в релизе junit?
Можно как-то сделать чтобы room при ошибках конпеляции показывал в каких файлах эти ошибки?
>>1045280как ты заебал со своим румом, нахуй ты его вообще юзашешь если у тебя каждый день какие-то ебучие вопросы возникают? юзай что-нибудь старое, которое уже обсосали со всех сторон пидор блять
>>1045297Охуеть у тебя там пекло. 2 вопроса задал всего лишь и на те ты, хуйло, не ответил.> юзай что-нибудь староеТы же мне и по старому не пояснишь, мелкобуква.А теперь скажи, нахуя мне юзать что-то другое, если room дает полную свободу и контроль без магии над бд как с кастомным sqlitehelperом, но без ебучих портянок бойлеплейта? Потому что хуй с харкача загорелся без причины?С вопросом я опять таки разобрался без твоих хуегорений, но то, что room при компиляции не показывает в каких dao\entity ошибки - реально неудобно, приходится их все перепидоривать на предмет багов. И есть можно как то эту инфу отображать, мне хотелось бы знать.
>>1045366Просто смотри дифф от рабочего коммита. Просто и понятно.>без магии над бд как с кастомным sqlitehelperомИ какая же там магия?
>>1045366Потому что есть жёсткая привязка к SQLite.Потому что кастомный хелпер даёт больше возможностей например, сторайошный.Потому что альфа-версия в продакшене не катит.Потому что RxJava 2 на продакшене - это уже 2018, а то и 2019.Потому что убогое говно из нативных запросов не заменено ни каким апи, просто перенесено в аннотации.Потому что не придумали вменяемого описания агрегирующих функций.Потому что нет удобного описания таблиц для связей.
Сап! Есть желание вкатиться в фриланс под Андроид. Не совсем с нуля. Сам я так-себе вебразраб, недавно студентота, знания кое-какие есть, портфолио толком нет. Под ведро умею делать и делал простенькие проги, вроде распарсить сайтик jsoup'ом, вывести список картинок из инета picasso, вывести маршруты всякие на вебвью из яндекс-карт. Во фриланс пытался вкатиться уже, но что-то идет туго, без смазки. Подскажи, анон, что надо еще выучить(видел часто упоминания в серьезных заказах о ReactNative, Dagger, Mockito), как надо вкатываться и, главное, куда? Наши биржи или буржуйские(с письменным инглишем более-менее, разговорный сложновато)? И да, анон, заранее говорю - с подобной работой у меня в городе туго.
>>1045895> вкатиться в фриланс под АндроидПроиграл.
Есть ли альтернатива SqlDroid? Он глючный, я ебал (например, нельзя использовать в разных потоках с setAutocommit(false) без невиданных архиуебищных костылей), и к тому же сдох.
У кого есть опыт в написании игр, где будет проще сделать игру: Unity или на чем-то типа LibGDX? Игра 2д с мультиплеером.
Быстрее бы уже первое сентября.
>>1045940Так а хуле толку, эти пидоры уже и на уроках с телефона капчуют, а на переменах так вообще собираются и всем классом крутят рулеточку и рофлят со смешных мемчиков. Выродки блять, поколение выблядков и дегенератов.
>>1045940>>1045984сап посоны, вижу вы опытные ребзи. собрал сегодня первый хеллоуворд. вывел на экран пару мемчиков с оксимороном. есть вопрос: какие вещи в ондройде нужно шарить чтобы устроиться джуном хотябы на 1000-1500 баксов? алсо еще ищу ментора т.к. много чего еще не понимаю(до этого кодил только на турбопаскале) и нужен опытный наставник, с меня сотни нефти нихуя зато вам ценный преподовательский опыт))также готов поконтрибутить в ваши проектики))я в этом году пролетел с поступлением и теперь до сентября нужно срочно найти работу.школьники реально заебали
>>1046031>джуном хотябы на 1000-1500 баксовИнтересные у вас джуны...
>>1046031Еще один войтивайти услышавший про "длинный рубль". Придется тебе соснуть.
>>1046031>какие вещи в ондройде нужно шарить чтобы устроиться джуном хотябы на 1000-1500 баксов? Тред читал вообще? Хелоуворлд - хуйня. Скорее всего не втянешь и за год без опыта технарской вышки на джуна андроида. Везде подразумевается как минимум знание JavaCore на 100%. Иди в обычную жаву сначала, там у тебя больше шансов.> с меня сотни нефти нихуя зато вам ценный преподовательский опыт))Ну и кому ты нахуй сдался учить тебя?>школьники реально заебалиой, я у мамы два месяца уже не-школьник
>>1046031>>1046151олсо то что ты пролетел с поступлением намекает что ты не очень умный, не совсем понял что тебе реально нужно, можешь забить нахуй и уйти в жс через 2 месяца и учить тебя пришлось бы проблемнее и дольше.
>>1046143>>1046148>>1046151>>1046154Лол, специально же потолще писал.
>>1045911не ну, а если серьезно? Мне так то не сильно много и надо пока что. Просто такая цель есть. Анон, дай дельный совет, ну?
>>1046260да какой фриланс, под ведроед фриланса нет, забудь
Почему ORMLITE ебет мне мозги? Делаю все по гуиде, но ему абсолютно насрать на название колонок первичных ключей. Я пишу следующее:@DatabaseField(columnName = "pizda", generatedId = true)private int pizda_id;А он все равно называет эту колонку "id" и жалуется что не может найти колонку с именем "pizda". Вот ошибка: Unknown field 'pizda' from the Android sqlite cursor, not in:[pizda, ...]И еще, пытаюсь сделать внешнюю переменную таким способом@DatabaseField(foreign = true)private Huy huy;но он тоже начинает кукарекать, что такой колонки нет (чсх ее и правда нет, потмоу что он не создает колонку huy_id, которую он должен создать).Класс Huy аннотирован по всем понятиям. Таблицы создаю с помощью TableUtils.createTable(connectionSource, Huy.class);TableUtils.createTable(connectionSource, Pizda.class);
>>1046483Может он не может нормально создать базу в Андроиде и стоит создать ее отдельно?
>>1046483если по гуиде не работает, значит ты делаешь не по гуиде
>>1046507Кажется, что ебучий инстант ран опять заглючил и деплоил мне какую то хуйню. Перезапустил студию и все заработало.
Есть один теоретический вопрос про WebView и фрагменты с ними.WebView сам по себе асинхронно загружает страницы, это понятно. Но у меня мои WebView находятся в нескольких фрагментах, один из которых в данный момент в состоянии onResume, а все другие - в onPause. Вопрос, будут ли все-равно WebView в фрагментах "на паузе" загружать страницы, если отправить коллбэк из другого класса?
>>1046573Да, забыл. Фрагменты у меня из support library, а не стандартные. Каждый WebView содержится в своем фрагменте
>>1046568щас бы инстант ран юзать в 2о17
>>1046573во-первых, что тебе мешает взять и проверить? а во-вторых, скорее всего - нет
Как-то можно получить размер Rect'a, который занимает подстрока в многострочном TextView? Я пробовал TextPaint.getTextBounds, но он все считает в одну строчку без учета переносов. Под ios есть NSLayoutManager.boundingRectForGlyphRange который делает именно то, что мне нужноhttps://developer.android.com/reference/android/graphics/Paint.html#getTextBounds(java.lang.String,%20int,%20int,%20android.graphics.Rect)https://developer.apple.com/documentation/uikit/nslayoutmanager/1403255-boundingrectforglyphrange?language=objc
>>1046568>инстант ранКак там в 2015?
>>1046761а что тогда юзать?
>>1046805JRebel
Двач, почему мой констрейнт лайаут идет по пизде?Стоят привязки все как мне надо, но если слишком большой текст в среднем текствью, то все идет по пизде по пикрилу.Можно ли сделать так, чтобы текст переносился на две строки, если не влезает в констрейнты?https://pastebin.com/cfGZAQjX
>>1046834юзай барьеры и будет тебе счастье
>>1046858Теперь работает как надо, добра. Странно что по описаниям туторов, барьер - это просто хуитка, которая позволяет задавать констрейнт относительного положения от нескольких вьюх, а не от одной. Что в моем случае не нужно, но без барьера не работает.Исправленая размета, если кому интересно https://pastebin.com/MJCHtPpn
>>1046927продолжу ревью, так уж и быть-коммит месседжи твои - хуйня, в прошедшем времени никто не пишет, норм пацаны пишут в настоящем типо не added как у тебя везде там написано, а add просто -всё в одной ветке, я канечно понимаю что ты модешь отмазаться что ты один сам для себя пишешь, но всё же, это очень плохая практика даже когда один пишешь-структура проекта это просто полный пиздец, в есть пакет ui, но внезапно в пакете settings находишь какую-то активити, какого хуя она там делает? есть пакет utils, но в пакете application какого-то хуя куча утилсов лежат, какого хуя вообще?-ты нахуя вообще на котлине пишешь? ты блять ебанутый что ли? это пиздец, сука, у меня просто слов нет, нахуй ты все поля объявляешь с помощью вар и нулами их делаешь? блять, просто иди нахуй с таким кодом, я больше не могу на это смотреть
>>1046997>всякую хуйню отревьюил, но ни за одно хуевое решение в коде не пояснилТы сразу пиши кто сам: андроид-разработчик или менеджеришка-хуесосишка? Чтобы тот анон знал: прислушиваться к твоим советам или так, в пол уха кукареки улавливать.
>>1047058а какая разница кто я? советы то максимально очевидны, любой джун согласится с каждым пунктом моего сообщения, а пояснять слишком много придется, пусть для начала исправит то, что я написал, чтобы его код хоть читать можно было, а потом уже и конкретнее можно будет посмотреть
Ксамарин еще жив?
>>1047060Понятно, очередной кукаретик.
>>1047062на кукаретика больше похож ты, я хоть что-то по делу говорю, в отличии от тебя
>>1047064> ко-ко-ко
>>1047073пиздец, с кем я в одном треде сижу
>>1047075> пук
>>1046636Главный вопрос в том, а зачем? Возможно то, что ты хочешь сделать, можно сделать по-другому.
Если я создаю обсерваблы в синглтоне, мне ведь по идее не нужно сохранять диспосабл для последующего удаления, да? Так как этот класс один хуй всегда в памяти будет, то течь не должно ничего. Или нет?
>>1047418схуяли он всегда в памяти будет? юзер убивает приложение во время того как твой обзервабл че-то там делает и всё, потекла малафья
>>1047433Но если приложение убито, то ОС сама всё освободит.
Кто-нибудь работал с osm на андройд? Что-то я нихуя не понимаю как можно скачать на телефон оффлайн кеш какого-нибудь города, может кто подкинет нужных ссылок?Да и вообще какого-то целостного понимания нет как оно работает. Я так понимаю сами данные openstreetmap - это просто набор структур типа нод, связей и т.д. с тегами инфорацией и всем прочим для какого-то региона. А тайлсорс - это какой то сторонный сервис, где вся эта поебень отрендерена и когда я устанавливаю в mapView тайлсорс MapInk, он просто качает и отображает картиночки от mapink?
>>1047434во-первых ос ничего не особождает, этим занимается гарбаж коллектор, во-вторых даже он не сможет освободить, т.к. у тебя обзервабл будет выполнять какие-то операции и на него будет всегда ссылка. а вообще я не понимаю проблемы, разве так сложно сохранить диспосабл и потом "отписаться" если юзер вдруг всё ебнет?
>>1047519Ну там проблема в том, что у меня создаются обсерваблы внутри сингла. Я отправляю файлы на сервер и хочу отображать прогресбар загрузки. Это сделано через кастомный RequestBody, который шлёт обсервабл через PublishSubject каждый раз когда в BufferedSink был записан очередной кусок файла точнее там по 3%. Так вот, сингловый диспосабл (который отправляет файлы) я сохраняю для последующего удаления (в onDestroy активити). А в каком моменте мне удалять диспосаблы созданные через PublishSubject не понятно.
>>1047530Ебать простыня. А потом удивляется, что у него ничего не работает.
>>1047532Так всё работает. Вопрос о другом был.
>>1047533> Так всё работает. Это пока. > Вопрос о другом был.Я мимокрок, только пикчу смотрел.
>>1047519>во-первых ос ничего не особождаетВсмысле? Система говорит убить приложуху которая валяется в бэкграунде, весь процес грохается, вместе с этим закрываются всякие DbOpenHelper'ы. GC просто не за чем работать, процеса не будет.>>1047530Я бы посоветовал тебе сделать сервис, который когда надо запускается и плоказывает твой прогрес бар или что там в нотификации.
>>1047543Я бы посоветовал тебе сделать сервис, который когда надо запускается и плоказывает твой прогрес бар или что там в нотификации.А если без нотификаций? Это хуёвая идея? Если мне нужно просто заблочить активити от юзера на время пока заливаются изображения на сервер. Пикрелейтед.
>>1047551А зачем блочить юзера?Ну елси хочешь блочить, то можешь сделать активити с темой диалога, и уже там все нормально отписывать.
>>1047557>А зачем блочить юзера?Ну, чтобы он не тыкал куда не надо пока заливаются фотки.В общем вот так решил сделать. doOnEvent должен вызваться в любом случае будь то обсервабл или эксепшон, там можно очистить CompositeDisposable я думаю.
>>1047530ебать говнокодище, но одно я могу сказать точно, ты НИКОГДА не хочешь создавать обзервабл внутри обзервабала(сингла), запрос любой сложности можно сделать на стандартных операторах, так что у тебя явно что-то не так
>>1047608>ты НИКОГДА не хочешь создавать обзервабл внутри обзервабала(сингла)Должно быть для этого есть какая-нибудь веская причина? И что значит на стандартных операторах? Я и так только стандартные использую.
>>1047617блин, посмотри на свой код со стороны вообще, ты используешь рх, но это ебаное полотно невозможно читать. ребята, которые написали эту либу, специально придумали хуеву тучу операторов чтобы код был МАКСИМАЛЬНО ЧИТАБЕЛЕН, чтобы просто был вызов нескольких подряд операторов и вуаля, они внезапно делают то что тебе надо, твой же код это просто винегред какой-то, с таким же успехом ты мог использовать лоадеры/асинктаски обмазавшись коллбеками и было бы скорее всего даже читабельнее чем то, что ты наваял используя рх, понимаешь?
>>1047626Так лучше стало?
>>1047630ну очевидно что да, но я вангую что в функции, в которую ты спрятал всю эту парашу всё осталось так же хуево
>>1047630а вообще, я бы на твоем месте всё-таки запарился и нормально переделал, я понимаю, что это сложно, но когда сможешь понять идею, которая стоит за всем этим, то сможешь писать пиздец какой красивый код. попробуй разробрать свой таск на отдельные части и смотря сюда http://reactivex.io/documentation/operators.html написать все чисто на операторах, там есть десижн дерево, оно тебе поможет, состояний кстати внутри желательно тоже не иметь
>>1047635>состояний кстати внутри желательно тоже не иметьВот без этого я вообще не представляю как жить.
>>1047642Тащи состояние через параметры, через zip/flatMap
>>1047645Но ведь тогда ещё больше колбаса получится.
>>1047646Ну это уже как ты напишешь. Вот например у тебя допустим инжектится две штуки ApiClient и Dao. Получив результат ыапи ты хочешь засунуть их в дао, получается что-то в духе:apiClient.getResults().flatMap(this.dao::save)Не красиво однако, захват переменной и в другом треде, ничего страшного в данном случае, но уже пахнет.А можно сделать так что бы инжектились Observable<ApiClient> и Observable<Dao>, во-первых не будет тормозов когда это все создается, а во-вторых можно сделать так:apiClientObs.flatMap(client::.getResults).zipWith(daoObs, (results, dao) -> dao.save(results))
>>1047649Хмм, ну вроде я понял о чём ты. Никогда бы не подумал даже инжектить обсервабл для апиклиента. Надо будет попробовать.
>>1047649Окей, а если мне нужно отправить запрос А, получить ответ, если в ответе ошибка, то отправить запрос Б и если запрос Б пришёл без ошибки снова отправить запрос А, но с параметром из запроса Б?
>>1047659>из ответа запроса Б
>>1047440Вроде того. Openstreetmap представляют только данные. Дальше нужно их отрендерить. Обычно есть тайловый сервер, который их рендерит. Это может быть сторонний какой-нибудь, а можно самому поднять. С mapView идут запросы к тайловому серверу, он возвращает картинки.Второй вариант - рисовать сразу на устройстве в векторе. Так работает maps.me или osmand.
>>1047659Если совсем не заморачиваться с publish или connect, то можно так:Observable<Params> paramsObs;//Observable/.just(params) напримерObservable<Result> resultObs = apiObservable.zipWith(paramsObs, (api, params) -> api.doRequestA(params)).share();Disposable normalSub = resultObs.filter(result::isSuccessful).subscribe(this::processA);Disposable fallbackSub = resultObs.filter(result -> !result.isSuccessful()).flatMap(apiObs).flatMap(api::doRequestB, Pair::new).flatMap(pair -> pair.first.doRequestA(pair.second.params)).subscribe(this::processA)Конечно с парой не очень красиво, но это можно опять же заменить на zipWith(apiObs, ...)
>>1047679Окей, спасибо.
>>1047668Да, разобрался. В есть йоба загрузчик кеша (CacheManager), просто указывается нужный тайловый сервер(тайсурс), баундинг бокс и zoom уровни. Можно еще ручками нарезать этих кешей и засунуть куда надо. Хотя почему-то дефолтная папка с кешами не меняется. Пробовал и Configuration.getInstance().osmdroidBasePath и tile cache. Один хуй в других папках не подхватывает. Хз, может ночью туплю.>рисовать сразу на устройстве в векторе. Так работает maps.meЯ так и понял. Уж больно у них маленькие объемы данных для городов загружаются. Да и разные запросы к данным в проге можно делать, т.е. явно не голые картиночки.Хотел бы я разобраться как они все это делают, но там у них какой-то кордкор на сях и jni. Сложновато для меня.
>>1047679Это так теперь выглядит код на жабе? Пиздец, ебтваюмать.
>>1047796Что тебя смутило? один динозавр ынтырпрайза примерно так же выразился
Поясните за xamarin. Я же могу без задней мысли использовать все классы стандартной библиотеки? Или нужно использовать биндинги андроида? Что-то не понимаю, этой инфы нигде нет.
>>1047061Бамп вопросу
>>1047867Бамп вопросу, расскажите за замарин.
>>1047886Видимо никто не пользуется, что странно. Как можно продолжать жрать жабье говно, когда есть божественный C#
>>1047905Как можно жрать майкрософтозамариноговно, если есть нативный фреймворк и котлин?
>>1047886Замарин это и есть биндинги android библиотек на C#. Все классы доступны, названия методов идентичны тем, что в жаве.
>>1047911>котлиной лолСтранно, что ты не упомянул REACT NATIVEБуду есть говно, но никогда не признаю что в майкрософт работают лучшие софтверные инженеры. Никогда не понимал этой упертости некоторых людей.>>1047917Ты не понел. Вот например, я создам вебреквест или FileStream. Он будет работать в андроиде как я этого ожидаю или нет. Как вообще моно там прикручен, это типа просто моно для линукса или что, там же наверняка в андроиде есть какие-то различия, где это можно почитать
>>1047923при чем тут реакт? Ты про Леночку, лол?
>>1047923>майкрософт работают лучшие софтверные инженерыЕсли у вас такие крутые продукты, то почему ими никто не пользуется? Шамх и мат спермобляди.
>>1047923>Странно, что ты не упомянул REACT NATIVE>Буду есть говно, но никогда не признаю что в майкрософт работают лучшие софтверные инженеры. Никогда не понимал этой упертости некоторых людей.Ты ведь не очень умный, да?Оставим толстоту про "лучших индософтваринжинеров".Но каким боком ты вообще приплел реакт найтив? Судя ответу ты не очень понимаешь как вообще все это работает, так хуле ты выебываешься, если у тебя даже не хватит знаний понять стоит перед тобой лучший софтвар инжинер или эникей-обрыган?Основной фрейворк андройда написан на яве т.е. всякие высокоуровневые вещи типа фрагментов, активити, вьюх, активити менеджеров и т.д.Замарин просто биндит все это на сишарп и тянет дополнительно свой рантайм. И как ты не выебывайся своим шарпом, сверх того что позволяет ява ты не сделаешь т.к. в конечном итоге вся хуйня с фреймворка крутиться на jvm.А теперь поясняй чем плох котлин? Не ололо, гавно от джетброент, а аргументированно и по пунктам.
>>1047944>а аргументированно и по пунктамКаких пунктов ты ждешь от спермопетуха? Он скажет в духе: "Ну ита абертка над джавая и ваабще ни как в сисярпе бггг"
>>1047944>А теперь поясняй чем плох котлин?Тем, что это очередной мертворожденный МОДНЫЙ)) велосипед от васянов. То, что понравилось васяну из jetbrains он добавил, а то, что не понравилось выкинул.Если уж вам так чего-то не хватает в жаве, почему не сделать какую-нибудь супежаву, как, например, сделали майкрософт с typescript'ом - отличный язык, никто ничего не говорит плохого. Зачем придумывать заново все эти fun))))? ЧСВ заиграло?Я о котлин не шкварился, и не могу ничего сказать. По пунктам почему kotlin говно можешь почитать в гугле. Например https://kukuruku.co/post/why-kotlin-sucks/
>>1047958>Не читал, но осуждаюЛол, как я и думал.https://kukuruku.co/post/why-kotlin-sucks/Статья - хуйнище полное, для таки вот мимонеписавших, от таких же мимотрихеллоувордаписавших.
Кстати, постоянно забавляет что идейные спермопетухи всегда уверены что у майкрософт все сделано лучше, краше и профессиональнее, хотя как правило ничего другого чтобы сравить не юзали(не хотят шкватиться), а все знакомство с другими платформами\технологиями заканчивается статьями вроде "why .net better than jvm". В то время как у джавабогов/сибогов/плюсобогов обычно гораздо шире кругозор и они всегда могут без идеологического хуеплетства пояснить чем та или иная хуитка лучше другой хуитки, а чем хуже.Мне было бы интересно узнать как происходит превращение в майкрософтораба. Эту загадку человечеству еще предстоит разгадать.
>>1047994предлагаю тебе на досуге почитать про sdk и API для виндовсфонов приложений. в терминах инженеринга, это как феррари и ваз.Я конечно понимаю, что в гугле квоты и API пишут негры-трансексуалы, но блять. Нормальным же людям с этим работать.
>>1047981Мне не нужно это читать, чтобы понимать. Я своим опытным взглядом оценил и понял, что это очередная инфантильная забава не стоящая в нее инвестиций. Намешали какой-то неюзабельной хуйни, с какого-то хуя перепасили весь синтаксис с нуля. Учите блять!Так серьезные люди не поступают. В этом jetbrains какие-то клоуны работают
>>1047286наложить градиент на текст
>>1048038Какие нахрен инвестиции? Прочитал 100 страничную документацию и все. Там нечего учить, если ты не вкатывальщик в ойти.>>1048036Маневры пошли. Про хорошесть апи и инструментария разработки на андройд я ничего не писал. Он то как раз, на мой взгляд очень хуевый. Но и это можно понять только попробовав что-то другое, в моем случае ios.Ну и конечно win32api и исходники xp в терминах инжинеринга и впрямь как феррари и ваз по сравнению с исходниками и api андройда. Андройд - феррари, уточню на всякий, а то мало ли.
>>1048062прочитав 100-страничную документацию ты напишешь только hello world по туториалам. Чтобы нормально писать на языке и понимать его особенности, нужно в нем долго ковыряться.>в моем случае iosэто ты еще UWP не видел. Это сам боженька сошел с небес и поведал майкрософт как нужно сделать
>>1048072>прочитав 100-страничную документацию ты напишешь только hello world по туториалам. Чтобы нормально писать на языке и понимать его особенности, нужно в нем долго ковыряться.Если ты знаешь платформу JVM - нет. Натурально взял и пишешь.
>>1048072>Чтобы нормально писать на языке и понимать его особенности, нужно в нем долго ковыряться.Кардинальных нововведений там нет, если ты знаешь любой оо язык со статической типизацией, то перейти на любой другой оо язык со статической типизацией дело гугления как та или иная фича\концепция делается в новом языке.>это ты еще UWP не видел. Это сам боженька сошел с небес и поведал майкрософт как нужно сделатьМне так знакомый макрософтоеб win32api лет десять назад посоветовал для гуев, когда я вкатывался, почти с такой же формулировкой. И я был уверен что так оно и есть, пока не попробовал нормальные вещи вроде qt, а потом и андроида. Так что иди ты нахуй. Слушать советы от майкрософтоебов хорошо если ты такой же зашореный майкроеб. Пройдет 2-5 лет, майки придумают еще какую-нибудь "прорывную" хуитку и будут на всех сайтах писать что сам боженька написал, а про UWP, WPF и прочую парашу все забудут, как это происходит уже давно с каждой их хм-кхм "технологией".
>>1048106>Пройдет 2-5 лет, майки придумают еще какую-нибудь "прорывную" хуитку и будут на всех сайтах писать что сам боженька написал, а про UWP, WPF и прочую парашу все забудут, как это происходит уже давно с каждой их хм-кхм "технологией". http://russian.joelonsoftware.com/Articles/FireAndMotion.html
>>1048106>про UWP, WPF и прочую парашу все забудут, как это происходит уже давно с каждой их хм-кхм "технологией". И это хорошо. Когда караван поворачивает назад, впереди всех оказывается хромой верблюд. То, что сейчас виндовсфоны непопулярны, заставлят МС искать новые решения. Когда ты лет через 5 вместо комьпютера будешь использовать свой телефон с андроидом, никто не вспомнит что именно майкрософт были пионерами в этом (континуум).Так всегда. Майкрософт сеит охуенные технологии опережающие время, а потом остальные собирают урожай.
>>1048185То-то майкрасофт джаву посеял...
>>1048187Все, к чему прикасается майкрософт превращается в парашу. Увы, джаву в свое время эта учесть не избежала.
>>1048350В том-то и дело, что Майкрософт сделал своюнитакуюкафсе джаву.
Нормально ли вызывать методы активити из фрагмента? Или есть какие-нибудь другие варианты? Например у меня есть активити и в нём три фрагмента сменяющие друг-друга. В каждом фрагменте нужно заполнить какую-то инфу, и вся эта инфа аккумулируется в активити, а заполняется она вызовами активити методов из фрагментов. Нормальна ли такая схема?
>>1048691очень хуёво, но если делаешь какой то пет проджект, то похуй
>>1048693А как лучше тогда? Через броадкасты? Через ивентбас?
>>1048695через репозиторий
>>1048706То есть записать куда-нибудь в бд и потом оттуда прочитать?
>>1048707Можно не записывать в бд, если не надо, а в памяти хранить
>>1048710Окей, понял.
>>1048710А если идел вызов метода, который отображает другой фрагмент и в этот фрагмент передается только айдишники нужных данных, это не зашквар?Как вообще лучше всего делать роутинг если несколько 3-5 фрагментов, которыми управляет одна активити?Мимохуй
>>1048691Абсолютно нормально. Только не напрямую методы активити дергай, а через интерфейс. Проверяй в onAttachActivity, что активити, к которой прикрепляется фрагмент, действительно реализует этот интерфейс.
>>1048766>Проверяй в onAttachActivity, что активити, к которой прикрепляется фрагмент, действительно реализует этот интерфейс.В смысле? Типа ассерт делать чтоб случайно не тот фрагмент не подключить? Или там какая-то другая причина?
>>1048766Сразу видно васяна
>>1048718через роутер, есть либа cicerone, но я ее не юзал
Вкатываюсь в андройд с явы, и нихуя не понимаю, что это за ошибка?> Error:(23, 24) Failed to resolve: com.android.support.test.espresso:espresso-core:2.2.2> <a href="install.m2.repo">Install Repository and sync project</a><br><a href="openFile:C:/Users/hp/AndroidStudioProjects/Catalog/app/build.gradle">Show in File</a><br><a href="open.dependency.in.project.structure">Show in Project Structure dialog</a>Решить-то решил, но теперь в новом проекте снова оно. Что это и откуда?
>>1049513Ты знаешь что такое система сборки? Ты умеешь читать ошибки? Ращберу по частям:Failed to resolve: com.android.support.test.espresso:espresso-core:2.2.2 - система не нашала данную зависимостьInstall Repository and sync project - установи репозиторий (не очень понятное объясненние, но есть только один репозиторий который - саапортный, открой из студии сдк менеджер и установи что надо, или удали зависимость)
Как приплетать mvp если у меня в фрагменте viewPager?Pager работает как фильтр т.е. каждая вкладка - это итемы одинаковой категории. Нужно ли выносить его логику в контракт т.е. делать в интерфейсе mvpView методы типа showAllItems, showGovnoItems(), showMochaItems(), а в presenter allTypesClicked(), govnoTypesClicked, mochaTypesClicked() и выносить события из pagerAdapter или все это пускай остается внутри viewPagerа?
>>1050559Зависит от того, что тебе надо делать с ними. Если у тебя есть логика взаимодействия вкладок между собой, и остальным экраном - нужно хэндлить события извне.
>>1048810Сразу видно долбоёба. Юзанёшь эвентбасец -> фрагмент будет слишком сильно отвязан от активити, придёт васян и сунет его в другую, потом очень долго копать говно, и почему не работает.Репозиторий - очевидный оверинжиниринг, если у тебя ни один фрагмент не содержит своей внутренней логики похождений на серверВ случае, когда у тебя фрагмент играет роль элемента вьюхи - нужно пилить newInstance с интерфейсом
>>1050575иди пили свои пет проджекты, а когда у тебя будет реальный проект с поддержкой планшетов, где все разьедется хуй знает как, тогда поговорим
>>1050573Ну вкладки между собой не взаимодействуют, при нажатии открывается другой фрагмент с детальной информацией айтема.
>>1048691> Нормально ли вызывать методы активити из фрагмента?Нормально, но в твоем случае нет. Очевидно, что у тебя идет работа данными, а значит кидай в дата слой. Нормально вызывать, когда тебе нужно что-то с активити сделать в качестве вью: коллапсинг лэйаут там отключить, экшнбару тайтл задать и прочее подобное.
>>1050677Вася, в чём твоя проблема?1) Не можешь сверстать макет для планшета с парой контейнеров?2) Не можешь продумать, что у тебя при любой ориентации можно спокойно держать несколько фрагментов в активити, а как их показывать - вопрос ориентации?Нет, конечно - на реальном проекте нужны только активити-пустышки-контейнеры для фрагментиков. Что твой фрагмент должен делать, если его вызвали не из того места, и в репозитории нихуя нет? Как на "реальном проекте" откатываешь репу при возврате на предыдущий фрагмент?
Как запилить кастомный шрифт во всем приложении? Чтоб не только TextView, а везде, чтоб для всех элементов не прописывать вручную.
>>1047530Wew lad. Шесть дней ушло на то чтобы это переписать. Вроде даже работает.
>>1051365Ну вот, это уже хотя бы читается.
>>1051221> для всехЭто каких? Calligraphy например.
>>1051427Я думаю он еще и про менюшки. В них каллигарфия вроде не влезет сама.
Аноны, а можно ли сделать приложение, чисто под один сайт?К примеру, при закрытии сайта в браузере происходит выход из аккаунта на сайте. Наверняка в приложении такого бы не было.
>>1051502Чет непонятно чего ты хочешь.
>>1051505Приложение-браузер, грубо говоряНо под один сайт
>>1051506Ну можешь сделать конечно. Берешь webvie и раз-раз. Но это тупо, так как просираются все плюсы браузера И все плюсы приложухи нативной.
>>1051530> Ну можешь сделать конечно, Мне бы найти того, у кого эта вся ебала развернута на машине, и который за спасибо сделает два телодвижения. Если не найду, то на досуге попробую сам сделать.
>>1051532поссал на тебя за спасибо
>>1051502Да, можно.Приложение вк, фейсбука это и есть приложения под один сайт. Нативные они потому что используют не html странички сайта, а андройд компоненты типа кнопок, листов и т.д. Тебе нужен нормальный rest api к сайту, если сайт генерит странички на сервере то угадай кто сосет.Конечн можно сделать отдельный вебвью в отдельном приложении специально для сайта, но это какая-то дичь и бессмыслица.Ну и на два телодвижения даже не расчитывай.
>>1051673> Ну и на два телодвижения даже не расчитывай.Вот обидно то!И да, я имел ввиду что-то типо > Конечн можно сделать отдельный вебвью в отдельном приложении специально для сайта, но это какая-то дичь и бессмыслица.
>>1051675А в чем смысл такого решения? Я как-то не улавливаю.
Суть такова. Я люблю обмазываться вёрсткой по гидлайнам и дрочить. Так вот есть один ебаный SearchView, который добавляется в Toolbar в onCreateOptionsMenu. Этот сречьвью когда в активном состоянии выбивается из сетки аж на целых 16dp. Т.е. у нас есть тайтл в тулбаре который от левой границы экрана находится в 72dp, а ебучая граница начала поля ввода у сречьвью в 88dp! Что пидорасит всю хуйню! Кто знает как победить? Кастомно пихать серчвю в тулбар не хочу.
>>1051823Ладно, похуй. Наследовался от серчвю и хакнул его. Сука, ну что за костыли. Почему нельзя было по человечески сделать?
>>1051837потому что серчвью юзают только петухи
>>1051948а что юзают не петухи?
>>1051959edittext и все анимации делаешь сам
>>1051969питушиная работа какая то
>>1051973Тебе дали свободу, не хочу, хочу жрать говно!
>>1051984Я ж русский.
>>1051994Тогда вот твоя бутылка.
>>1052007Присел.
>>1051365Всё-таки рано я обрадовался. Теперь постоянно откуда-то берётся onComplete ивент из-за которого PublishSubject перестаёт принимать обсерваблы. Хуй вообще знает откуда он берётся и чё с этим делать. Сделал аналог, чтоб потестить - https://pastebin.com/QCCuJ22kЕсли в sendRequest передавать GOOD_SESSION_ID, то всё ок, onNext в responseSubject вызывается. Однако, если поменять GOOD_SESSION_ID на BAD_SESSION_ID, то в таком случае после sendRequest сразу откуда-то берётся onComplete. Вот откуда он берётся и как это пофиксить, может кто подскажет?
>>1052137Список итемов что ты эмитишь закончился, чего ты ожидал?
>>1052256Но почему тогда оно работает с GOOD_SESSION_ID?
>>1052267
>>1052137Окей, кажется нашёл, что вызывает onComplete. Observable.toList()Теперь, по идее, осталось переписать без использования toList() или любого другого оператора который вызывает onComplete. Возникает вопрос - может есть какой-то оператор для фильтрации ивента onComplete?
Котаны, спасайте, затрахался уже с Bluetooth Classic. Все детали тут: https://stackoverflow.com/questions/45909990/bluetoothsocketconnect-is-locking-the-thread-and-throwing-ioexception-after-whiВкратце проблема: что бы я не делал и как бы не ебался - BluetoothSocket#connect() всегда выкидывает такое говно:java.io.IOException: read failed, socket might closed or timeout, read ret: -1W/System.err: at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:581)W/System.err: at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:558)W/System.err: at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:374)Дедлайн очень и ОЧЕНЬ скоро, а этот проебос мне портит всю жизнь (ога, без подключения то функционал не протестировать особо...). Буду признателен за любую наводку на причину проблемы.
>>1052365p.s. Ебаный блютус, ненавижу, блять, ебаный блютус.
>>1052366Закрыто, девайс не поддерживает Bluetooth Classic с вероятностью 99%
Сап программач веб программист с большим стажем, вкатываюсь в ондройд. В связи с этим тупые вопросы: Вот у меня есть drawlerLayout у него внутри инклудится @layout/app_bar внутри app_bar инклудится @layout/content_main Дык вот я нажимаю пункт меню в этом самом дравлере и хочу чтобы вместо content_main заинклудилось что то другое. Как мне это сделать ? Я могу использовать setContentView();но тогда мне придется продублировать @layout/app_bar и корневой drawlerLayout, а я же не совсем дурак понимаю что это плохо.
>>1052453Классчиеский подход в данном случае не икнлюдить мейн контент, сделать там контейнер для фрагментов, и уже их по нажатию менять.
>>1052458Дык вот а как их менять?
>>1052493через FragmentManager, ты бы хоть доку чуть почитал, ну.
>>1052518нет я же и так дохуя умный Давай ссылку на доку
>>1052522пошел нахуй, долбаеб
>>1052297Разобрался. В общем помогла либа RxRelay.
Есть ли кто использовал Apollo Android в своих проектах? Нужна помощь в использовании данной библиотеки. Нужно разобраться, как составить файл scheme.json и как его применить. В официальной документации представлена неясная для меня инструкция по созданию необходимого файла.
Хочу сделать кастомизацию цветов некоторых элементов интерфейса в настройках приложения. Как это лучше всего сделать? Первое что приходит в голову - это сохранять цвет в преференсес и вместо ContextCompat.getColor() брать из преферес, но не будет ли тут проеб в производительности?
>>1052611естественно, нахуй вникать в суть, можно же либу подключить, которая потом за этот баг еще 10 выдаст.
>>1052809Не будет, но будет неудобно.Попробуй https://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributeshttps://stackoverflow.com/questions/3083627/android-reference-the-value-of-an-attribute-in-the-currently-applied-theme-fro/3679026#3679026
>>1052830Нет, всё-таки обошёлся без либ.
>>1052872Нахуй тебе мерджить первый и второй attempt? Мне чет подсказывает, что ты не вкуриваешь, как это работает.
>>1052874Ну это два разных реквеста (название переменно не поменял прост), но результат будет всего один - либо сразу ErrorCode.OK, либо сначала ErrorCode.BAD_SESSION_ID, затем релогин, вторая отправка запроса, и потом в 99% случаев ErrorCode.OK. Как мне их ещё в один объединить?
>>1052881То есть в конкретно данном случае requestFirstAttempt будет пустой.
>>1052881Лови вот такой псевдокод, думаю, поймешь в чем проблема твоего.flatMap(req1 -> when { req1.isSuccessful -> Observable.just(req1) else -> req2Observable})
>>1052882А, посмотрел твой код. Это тест что-ли ?)
>>1052889Ну, конкретно этот кусок кода да, это тест переписанный с реального кода.
>>1052894Вот полный код, если кому интересно - https://pastebin.com/3sAqFJg5
>>1052836Так это же просто програмный доступ к атрибутам темы, а мне надо чтобы пользователь мог установить свой цвет в настроечках(транспортная прога и в зависимости от типа выбранного транспорта меняются цвета интерфейса, я хочу чтобы пользователь мог менять цвета типов транспортов: троллейбус, автобус и т.д.). Темы я поэтому не использую. Дефолтный айдишник цвета захардкожен в энуме типов транспорта, пока придумал делать что-то типа синглтон прокси класса Colors. Который в onCreate в аппликейшн загружает все переопределенные и дефолтные цвета и отдает переопределенный цвет, если он есть, или дефолтный. А везде где берется цвет транспорта использовать getColor этого класса. Но я не знаю насколько это зашквар. Впрочем каждый раз брать из преференсов думаю было бы еще зашкварнее
>>1052809Не будет. У тебя префы грузятся в память полностью и доступ по ключу к мапе.
>>1053659> У тебя префы грузятся в память полностью и доступ по ключу к мапе.Вот этого не знал, спасибо.
Что то какой-то вялый тред.
Гайз, посоветуйте дауну - как лучше сделать задержку в развитии в асинктаске и не положить основной поток? Обычный "тред.слип" ложит UI, а хандлер ругается, да и можно ли им в асинктаске шурудить?.Сори за нубство.
>>1054670не особо понял, но попробуй Thread.currentThread().join(1000)
>>1054670В смысле слип в асинк таске не рабоатет? Какая-то хрень.Не верю короч. У меня все ок.
>>1054666Еще бы.https://stackoverflow.blog/2017/08/29/tale-two-industries-programming-languages-differ-wealthy-developing-countries/https://stackoverflow.blog/2017/08/22/world-mobile-development/>Android tended to be visited more from lower-income countries than from higher-income ones.
>>1054670>Обычный "тред.слип" ложит UI,Doing it wrong.Код кидай живо, блять, щас тут убивать нахуй будем. В doinbackground надеюсь слип вызываешь? runInMainThread внутри используешь?
>>1054685Я думал на гейос больше во всяких муриках разрабатывают, а тут воно оно как, даже рашка и казахи чаще вопросы по тегу гейос ищут.
>>1054687Вот код, только не пиздите плз, правда не работает юи время исполнения.https://pastebin.com/cWvPkpeY
Кто-нибудь работал с блютузом? А именно с bluetooth LE. Нужно как то подключиться к устройствам, что шлют адвертайз пакеты и их распарсить, я чет вообще не могу сообразить как это сделать. Помогите пожалуйста.
Антуаны, наверняка ведь есть онлайновые сервисы, которые позволяют потестить свою приложуху на разных железках и осях. Кто пользовался, посоветуйте, плиз. А то меня терзают смутные сомнения насчёт производительности моей нативной либы.
>>1054782https://firebase.google.com/docs/test-lab/
>>1054687>>1054678>>1054675Я понял где налюбился.Гетом пытался получить данные из класса. Как лучше будет получить их?
Андроны, в 2017 году как лучше делать разметку для этого пиздец какого огромного кол-ва разных ебанных экранов? layout-mdpi, hdpi, xxdpi? Так я больше экранов охвачу?
>>1054873сделай нужное поле публичным и получай сколько влезет.а вообще, ты доки асинктаска читал? где онПостЭкзикьют метод?и ещё, ты пытаешься получить данные в ui треде, которые обновляются в бэкграунд треде, не думал что это обновление занимает время? и что ui тред когда запросит нужные ему данные обосрется? т.к. там ещё нихуя не будет записано. кароче вам двойка, переделывайте
>>1054897всмысле, ты просто рисуешь всё в денсети индепендент размерах и тебе похуй какой там экран
>>1054873Ебать дичь, иди разбирайся что такое асинхронный вызов и как работает многопоточность.У тебя в postExecute асинктаск должен делать все, что ты сейчас пытаешься сделать в try потому что когда ты вызываешь execute твой код выполняется в другом потоке и закончит через некоторое время, после чего будет вызов функции onPostExecute в главном(ui) потоке, в котором ты сможешь обновить кекстВью своими охуительными историями.
>>1054897V E C T O R D R A W A B L E
>>1054897Выбирай лэйут по ситуации, шоб все тянулось можно использовать ConstraintLayout, это аналог гейосовского AutoLayout.
Посаны, а есть ли какой-то способ сделать radiobutton c autofit текстом? Для своих textview использовал левую библиотеку, а вот для радиобатанов такого не нашел. Ситуация такова, есть четыре кнопки с определенной высотой, в них передается текст разной длинны, и в некоторые кнопки он не помещается. Хуита.
Сап, есть инт обернутый в ЛайвДату. Нужно привязать к нему рх что бы после того как значение не изменялость три секунду емитить его дальше. Как это запилить? Вроде debounce нужен,правильно?
Анон, вопрос.Мне надо, чтобы приложение переводило определенную сумму денег с карты одного пользователя на карту другого. In-app billing по этой причине использовать не получится. Есть ли какая-нибудь либа для этого? (Опционально: как ее сдружить с Firebase\Backendless?)
Вкатываюсь с Qt в андроид разработку. Есть ли между ними какие-нибудь параллели? Что есть почитать/посмотреть для не совсем начинающих?
Программирую интернет магаз. Как сделать лучше загрузить сразу с сервака весь каталог товаров около 4к штук при загрузке приложения или загружать товары и категории последовательно при их открытии?
>>1055201>Посаны, а есть ли какой-то способ сделать radiobutton c autofit текстомЧиво блять? В последней сапорт либе есть автосайз для текствью. https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview.html#setting-textview-autosize>>1055436Ну типа, debounce ждет 3 секунды, и если нового не пришло пробрасывает дальше, иначе ждет еще.>>1055468Какая-то ебала странная, кто тебе даст с карты на карту переводить-то? Этим банки занимаются.>>1055697Формошлепстов везде в той или иной степени одинаковое. MVC/MVP/MVVM и ты гуд ту гоу, читать доку: https://developer.android.com/index.html>>1055712>при их открытии?Это. Желательно кешировать на некоторое время.
>>1055717>Чиво блять?Есть radiobutton с определенной высотой, и есть текст который висит на этом радиобатоне который не влезает на сам батон, а уходит за него. Спасибо за наводку, но эта хуита для 26-го апи, они ебанулись совсем, такую простую фичу не добавить раньше и для старых апи.Нашел такую ебань для textview https://github.com/grantland/android-autofittextview . Но для радиобатона, не могу найти. Вообщем подумав решил сделать через if, else. > if (RadioButton1.getText().length() > 25) {> RadioButton1.setTextSize(12);> }> else if (RadioButton1.getText().length() < 25) {> RadioButton1.setTextSize(18);> }Теперь возникла другая проблема. Как определенные блоки кода заставить работать на разных Layout'ах? Допустим для xxhdpi, мне нужен больше текст чем для mdpi. Помоги Ананас
>>1055945Чукча писатель? Там написано что через сапорт либ это начиная с 14 можно сделать.Ресурсы можешь указывать так же как лэйауты епт: values-mdpi/dmens.xml, values-xxxhdpi/dmens.xml....
>>1055963Спасибо за помощь няша. Пытаюсь заставить это дерьмо работать, но вот какого хуя нету нихуя этих методов ?>TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)>TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
>>1055969А либу-то обновил?
>>1055969>>1055999Всем все находится. В какой-то из этих лежит (26.0.0).
>>1056083>1 пик>Эта длина названия методаА я думал, что про жабу так только шутятмимо
>>1056085Ты еще спринга не видел.
>>1056085Шутят те, кто привык писать учебные скрипты по 20 строчек и со сложными системами не работал.
>>1056085То ли дело старые добрые strcpn, vssnprintf и mbstowcsI
Хочу написать приложение с другом. Не подскажете как нам вместе его писать? Чем нужно пользоваться?
>>1056208https://www.youtube.com/watch?v=dYBjVTMUQY0
есть 2 активити, один из них чайлд другого. это указано в манифесте, то есть кнопка назад появляется автоматически, но при нажатии на нее анимация идет не справа налево, а наоборот. при нажатии системной кнопки назад идет правильная анимация. почему так? и чтобы это починить обязательно писать свой xml с анимацией или есть встроенные?
>>1056225>идет не справа налевонаоборот, не слева направо.
>>1056208Главное яйца побрейте и клизму сделайте.
>>1056225какая кнопка назад появляется автоматически? кнопки обычно автоматически не появляются. а если ты хочешь сделать тоже самое что делает системная кнопка, то что тебе мешает вызывать тот же метод, что вызывается при нажатии на системную кнопку?
в манифесте: android:parentActivityName=".MainActivity"после этого сама по себе появляется кнопка назад в верхней панели (пикрелейтед)>>1056265ничего, просто интересно почему именно такое поведение
>>1056267ну да, для таких кнопок обычно руками анимацию прописывать надо, но там вроде не сложно, просто нужно указать откуда куда ехать
>>1056083>>1055999Спасибо Ананасы обновился. В support:support лежит. Но не смог прикрепить ее к радиобатонам, просто напросто нихуя не происходит.Делал вот так. Хуйня походу. Теперь ищу какое-то другое решение. Если ресурсы указывать через values-mdpi, это же будет тоже самое что я просто укажу размер шрифта в layout-mdpi? Нахуй мне тогда values создавать?> TextViewCompat.setAutoSizeTextTypeWithDefaults(RadioButton1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
>>1056085МОЖЕТ СЕБЕ ПОЗВОЛИТЬ.Нормальная иде покажет нужное автодополнение в 3-4 клика динамико\вимо\емаксопетухам такое и не снилось.
>>1056297>Нахуй мне тогда values создавать?Что бы не делать layout-*, нахуй тебе повторять верстку ради размеров?
Посоветуйте книгу по разработке приложений (не игр) на Java?
>>1056577А чего повторять? Ну вот у меня допустим layout-mdpi, hdpi,xdpi,xxxdpi, хуйdpi и там в радиобатоне разного размера текст mdpi- 8, hdpi - 12 и так далее епт. И будет у меня value-mdpi допустим. Так там же я буду указывать размер шрифта 8 для моих батонов, так ведь? Так нахуя оно надо? Я просто не верю что нету адекватного решения для такой простой проблемы как авто фиттинг под размер ебанной кнопки. Ну как так сука? Это же первое что надо было делать, при таком то количестве разрешений, размеров экранов, и прочей ебалы.
Двач, почему в нете так много статей про вложенные фрагменты в фрагменты во фрагментах внутри фрагмента и героическое преодоление их проблем, да и в целом вся эта возьня с фрагметами? Что такое может фрагмент, чего не может кастомный view?
Есть ли какая-нибудь либа с вьюхой как на пикрил? При клике на центральный круг появляются все сстальные.
>>1057008https://android-arsenal.com/details/1/5697
>>1057008пиши свою реализацию уебок хотя о чем это я, ты же говнокодерок
Делаю toolbar вместо actionbar. До этого цвет иконок и текста в панели был белый, теперь черный. Стиль вроде бы тот же. Как эту хуйню покрасить в белый, ананасы?
>>1057079все заработало, просто дизайнер не обновлялся
Посоны, подскажите как сделать толковую задержку отправки данных на сервер? Карячу все через HttpURLConnection, так вот setConnectionTimeout не робит.
>>1057083Thread.sleep(5000);
>>1057085А разве это не колхоз? И еще мне требует с довольно точной задержкой отправлять данные, а если ложить поток, то какой-то хуя вылезают расхождения во времени - записи в бд появляются в разный интервал времени, а не в заданный.
АНАНАСЫ, как мне обращаться к инклюженному лэйауту? То есть у меня есть toolbar в отдельном лэйауте, я его инклюжу как на пикрелейтед, а потом хочу, чтобы TextView через Constraint привязывалось к его низу. Как такое сделать?
пиздец ваш андроид параша по сравнению с qt. constraint layout единственная нормальная вещь.
>>1057092Дай инклюду айдишник и используй его как обычно.
>>1057097Ну так и писал бы приложения на Qt. А мы бы посмеялись с результата.
>>1057009То что надо анон, спасибо.>>1057024Ну и чего рвешься? Написал бы, если бы не нашел. хотя о чем это я, ты же хейтящий школьник-мелкобуква
>>1057117Maps.me
>>1057089HttpUrlConnection это колхоз
>>1057092>обращаться к инклюженному лэйаутуНа "Вы"
>>1057083Используй rx, быдло
Сап.Пилю приложение для смартфонов 4.2+, которое должно взаимодействовать со смарт-браслетом, брать с него данные датчика сердцебиения и выводить на экран. Разобрался как делать блютус-соединение норм, подключаться к устройствам, etc., а вот как с браслетом взаимодействовать хз. Через UUID, по идее?..Короче, если кто-то кинет чего почитать на эту тему, буду крайне признателен, потому что в гугле какая-то ебола только, а сдавать проект нужно уже завтра.
>>1048695Взаимодействие между фрагментом и активити идёт или через коллбэки, или (если у тебя нормальная архитектура) вообще через презентер на уровне "эвент на фрагменте" -> "обработка на презентере" -> "коллбэк с презентера в активити".
>>1057356Тащемта, никаких секретов нет, просто берёшь и записываешь в дескрипторы характеристик нужные команды, а потом слушаешь изменение других характеристик. На developer.android.com была подробная статья про BluetoothLeGatt с примером в репозитории.У всяких таких девайсов есть подробная документация с описанием, какие именно характеристики там есть, что туда можно посылать. Heart Rate Characteristic вообще, если я правильно понимаю, имеет стандартизированный константный для всех девайсов UUID, можешь тупо с гуглосэмпла код копипастить.
>>1057361Огромное спасибо, ты даже не представляешь, как сильно мне помог.Тем более, что на девелопер-андроиде даже в тестовом проекте почти всё сделано как мне надо, похоже.Не знаю даже, как тебя отблагодарить, так что вот тебе просто анимешную бабу.
Чому шапки нет? Мне, как ньюфагу, чтобы тред не засорять, было бы лучше Щ.И.Т.О почитать, да список материалов поглазеть.
>>1057414Ньюфаги not welcome here
>>1057443Ну, охуеть теперь. Кастовое деление ИТТ.
>>1057414В предыдущих тредах была, поищи на архиваче.
>>1057083JobScheduler
>>1057364>а сдавать проект нужно уже завтраИзбегайте такизх ситуаций.
>>1057364>>1057356В своё время занимался такой хуетой. Суть в перекидывании объекта и телефона посылками, как уже и было сказано. Обычно есть уже все готовые UUID для сердцебиения, температуры, что там ещё. Пару полезных ссылок у меня осталось, может быть и тебе поможет. К слову про малое количество информации в сети ты прав. https://stackoverflow.com/questions/20043388/working-with-ble-android-4-3-how-to-write-characteristicshttps://habrahabr.ru/company/mailru/blog/251937/https://stackoverflow.com/questions/33043582/bluetooth-low-energy-startscan-on-android-6-0-does-not-find-devicesgot you fam
>>1057414Сделай лучше Сперва добейся Нас вообще долгое время на доске не было, кушайте что есть, шапка ближе к выходным будет. Может прежний ОП умер в зоне ЗАЩО.
ПЕРЕКАТ https://2ch.hk/pr/res/1057688.htmlПЕРЕКАТ https://2ch.hk/pr/res/1057688.htmlПЕРЕКАТ https://2ch.hk/pr/res/1057688.html
>>1057605Не дождетесь!
Опчик, создай нормальный перекат, без этой всратой шлюхи.
>>1057700Создал тебе за щеку, проверяй.
>>1057703Спать ложись, а то затра на первый урок опоздаешь.