Этого треда уже нет.
Это копия, сохраненная 29 сентября 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
677 Кб, 900x660
Разработка под Android тред №26 #829054 В конец треда | Веб
Гугл выпускает Android 7, а мы продолжаем обсуждать разработку под самую популярную ОС для всего подряд.
Предыдущий тред: >>814733 (OP)

Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом.

А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный. Куплено Microsoft. Теперь есть бесплатная версия.
5) BugVM (RIP RoboVM) - идейный наследник ксамарина, а теперь уже и его часть но на Java. Учитывая что Microsoft убила RoboVM, встречаем опенсорсный BugVM.

Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Хотите писать на котлине? Добро пожаловать в JetBrains и Avito.

Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.

Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development - в отличии от остальных книг она обновляется, а так как ведро не стоит на месте а хуярит семимильными шагами, то я бы и не советовал другие книги.

А теперь, так как заебали уже всех, гайд для:

>"Я хуярил на делфи 5 лет назад а теперь хочу вкатится в андроид":



Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush или codingbat.com.
Можно Эккеля "Философия java" почитать.
Или Хорстманн "Java. Библиотека профессионала" до 7 главы.

Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.

Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.

Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Работа с json.
Привет клиент-серверка.
#2 #829056
Какие подводные камни у ксамарина ?
>>829062>>829080
#3 #829062
>>829056
Пацаны в треде засмеют.
#4 #829075
Дублирую

Анончики, кто юзвет StorIO? Мне надо положить в бд два разных объекта, т.е. сделавть два put'a с разными классами, но надо чтобы они были в транзакции. Это делается через lowlevel? Т.е. например:

lowlevel().beginTransaction();

storIOSQLite.put().object(firstObject)...//First class
storIOSQLite.put().object(secondObject)...//Second class

lowlevel().setTransactionSuccessful();
lowlevel().endTransaction();

Правильно?
>>829086
#5 #829080
>>829056
ДАЖЕ НЕ ДУМАЙ
>>829291
#6 #829086
>>829075
Всё верно.
#7 #829120
Подскажите, нужно отлавливать моменты когда юзер: выключил вай-фай; а так же чтобы он мог выбрать точку доступа(домашнюю вафлю, допустим) и отлавливать момент когда он вышел из ее зоны действия.
Реально ли это и куда копать?
>>829132
#8 #829132
>>829120
System service Connection manager
#9 #829291
#10 #829601
>>829054 (OP)
Привет, анон.

Как лучше всего защищать свой платный контент в приложении, при условии, что оно имеет возможность работать без интернета?

Что использовать в качестве ключа, варианты:
- hardwareid
- mac adress
- imei
- что-нибудь еще?

Google не рекомендует использовать ни один из них:https://developer.android.com/training/articles/user-data-ids.html

Суть в том, чтобы не допустить такую ситуацию:
"Вася купил платный контент и выложил файлы на 4pda, написав в какую директорию их положить, шоб всё бесплатно работало".
#11 #829623
>>829601
И еще вдогонку: как лучше всего аутентифицировать пользователя без необходимости ему вводить логин и пароль?
>>829639
#12 #829635
>>829601
А если к email юзера привязаться?
Тогда и тот, кто купил будет доволен, что у него на нескольких девайсах работает и халявщики с 4pda немного поебутся.
>>829652>>829661
#13 #829639
>>829623
Гуглологин, есть еще анонимная авторизация от фаирбейза.

>>829601
Вообще

> Because the Google Play client now caches In-app Billing information locally on the device, you can use the Version 3 API to query for this information more frequently, for example through a getPurchases call. Unlike with previous versions of the API, many Version 3 API calls will be serviced through cache lookups instead of through a network connection to Google Play, which significantly speeds up the API's response time.


Так что дефолтное поведение - ты можешь спрашивать у сервисов, купил человек что-то или нет у сервисов оффлайн.
Если у тебя есть бэкенд, то лучше привязываться к нему, ибо на бэкенде будешь валидировать покупку и отмечать у юзера, какой контент ему доступен. Тогда к мылу привяжешься.
#14 #829652
>>829635
На 4pda есть программа для смены hardwareid. Исходя из этого, можно предположить, что программы для смены (чтобы приложение так видело) email аккаунтов гугл также существуют, но их я еще не видел. Вариант развития событий:
"Вася говорит какой email вбить в утилитку."
>>829692
#15 #829661
>>829635
А вообще привязка к аккаунту и поддержка нескольких девайсов будет. Еще есть вариант собрать всю возможную информацию об устройстве пользователя, склеить её в строку и зашифровывать так. В итоге для того, чтобы нелегально установить платный контент, придется каждый раз спец. утилитами менять информацию о девайсе, перед юзером будет выбор: заплатить 100р или затрахаться, (но зато запустить нелегально)
#16 #829666
>>829639
Спасибо тебе, посмотрю. Чуть позже отпишусь
63 Кб, 659x494
#17 #829692
>>829652
Да забей. Халявщиков немного. Люди уходят из форумов.
#18 #829696
>>829639

> анонимная авторизация от фаирбейза.


Можно поподробнее?

другой анон
>>829746
#20 #829849
>>829601
Ебать я твой платный контент на раз два выкуплю через freedom. Попробуй защити.
>>829858
#21 #829858
>>829849
И на коллбек на моем сервер от имени Google Play запрос пошлешь через freedom?
#22 #829864
>>829746
>>829639
Что в нём особенного? Ведь можно вручную это сделать, используя собственый сервер, или нет?
>>829872
#23 #829872
>>829864
Можно, только зачем?
#24 #829875
>>829746
Спасибо за ссылку.
5 Кб, 267x168
#25 #829877
Где правильно инжектить зависимости во фрагменте?

Когда вызывать
((MyApp) getActivity().getApplication()).getMyComponent().inject(this); ?

В интернете пишут, что нужно делать в onCreate(), но ведь тогда есть шанс словить NullPointer, ведь activity может быть еще не создана. Делать в onActivityCreated() ?

Кто как делает?
>>829879>>830105
#26 #829879
>>829877
PS. Речь про Dagger 2, конечно же.
#27 #829938
анончики, а вот подскажите плз че делать
вроде нормально изучал ООП и джаву в частности
писал примитивные задачки под андроид(калькулятор на 2 числа, простенький список с чекбоками и переходом на другое активити)
че мне делать дальше? мб какие то курсы от гугла проходить или делать свое приложение, но уже боле сложное?
че посоветуете?
#28 #829939
>>829938
android developer nanodegree (стоит дохуища денег, но все материалы бесплатные)

там будет задание - написать приложение
>>829953
#29 #829947
>>829938
да, пили более сложные приложения
как выше посоветовали, можешь пройти курсы на udacity: бесплатный developing android apps и платный nanodegree (ищи на торрентах)
>>829949>>829953
#30 #829949
>>829947

> платный nanodegree (ищи на торрентах)


Так там платная только поддержка инструкторов и код-ревью. Какие нахуй торренты?
>>829964>>829965
#31 #829953
>>829939

ну вот а в плане там устроиться на работу?
надо же какое то портфолио хотя бы 1-2 приложения вывложенных в плей маркете
и хватит ли знаний, полученных от курса юдасити, что бы претендовать хотя бы на джуниора андроид дева?

>>829947
а какое более сложное? вот например. просто я даже не представляю что надо делать?
>>829958>>829966
#32 #829958
>>829953

> хватит ли знаний, полученных от курса юдасити, что бы претендовать хотя бы на джуниора андроид дева?


Если не тупой, то хватит.

> какое более сложное?


Клиент для Двача.
#33 #829964
>>829949
А, да? Прямо на их сайте проходишь, как и бесплатные? Заебись, я думал они сразу данные карточки просят ввести.
>>830120
#34 #829965
>>829949
чето я не нашел как там бесплатно смотреть видосики и тд?
#35 #829966
>>829953
Только не пытайся выдумать что-то новое, всё уже написано. Клиент для какого-нибудь сайта, у которого api есть, напиши, с настройками и материал дизайном.
>>829968
#36 #829968
>>829966
что имеется ввиду под материалом дизайном?
>>829973
#37 #829973
>>829968
https://material.google.com
гайдлайны Гугла по дизайну андроид приложений
>>829988
#38 #829978
я так и не понял как смотреть бесплатно курсы от юдасити?
#39 #829988
>>829973
окей посмотрел анимашки, почитал статьи
но как это в коде реалтизовывать?
>>829996
#40 #829996
>>829988
Если делаешь на активити, то с пятого андроида куча всяких новых классов для этого появилась. Если нет - ручками, наследуешь View, переопределяешь onDraw().
#41 #830004
>>829054 (OP)
аноны, я опять со storio, я юзаю его вместе с rx, и там при каждом обновление таблицы емитятся данные, но мне это не надо, остается только юзать first()?
>>833401
#42 #830022
почитав статьи в гугле, решил запилить клиент для опенвезермапс, так как там апи несложное и просто опыт хороший
что скажете? стоит такое делать?
>>830027>>830028
#43 #830027
>>830022
Чего ты нас-то спрашиваешь? Тебе интересно делать приложение погоды? Если да, пили, тут кроме дефолтного REST можно ещё поучиться работе с БД (ну там сохранять города, например), графону (визуализировать погоду), дерзай.
#44 #830028
>>830022
Для учёбы любое пойдёт, а погодное приложение это классика. Его же кстати пилят и в бесплатном курсе на udacity, developing android apps который.
#45 #830031
спасибо, анончики
щас спатки,а утречком начну
тут нормально к нуфагам относятся, ну там если спросить по мелочам всякое?
ах да еще вопросец:
знакомый андроид дев сказал, что сейчас уже все пользуються фрагментами и в активити никто особо ниче не пишет, только во фрагментах
это так?
>>830033
#46 #830033
>>830031
Нет, пишут. Если тебе нужно K P A C U B O, то у тебя два варианта: первый - это на активити, на что заточен Design Framework гугла, второй - ты учишься делать как в телеграме стек View. Сложно, не для энтри левела и вообще к такому стоит подходить постепенно. Да, ты можешь скипнуть построение приложений на активити и сразу на фрагментах шлёпать (сами фрагменты, кстати, тоже по сути вьюшками являются), понять, в чём минусы и попробовать как-то эти проблемы решать.
>>830035>>830039
#47 #830035
>>830033
ну по крайней мере я именно через недостатки фрагментов пришел к подсмотренному в телеграме концепту "стек вью"
>>830059
#48 #830039
>>830033
ну вот я просто до этого все примитивные приложухи делал в активити
весь фукционал и примитивную графику
стоит ли заниматься фрагментами или сделать все в активити, а потом уже изучать фрагменты или стек вью вот эти о которых ты сказал
>>830046
#49 #830046
>>830039
Если ты считаешь, что об активити у тебя представления есть, фигачь на фрагментах.
#50 #830059
>>830035
Млкобуква поясняет за НИНУЖНОСТЬ ФРАГМЕНТОФ. Классика.
(Автор этого поста был забанен. Помянем.)
#51 #830082
>>829054 (OP)
Ведрач, шарполох пришел к вам за советом. Появилась необходимость запилить софтину на ведро, но Xamarim - гора костылей и не нужен. Поэтому буду на нормальную JVM вкатываться. Но от жабы у меня появляются рвотные позывы. А вот Котлин вполне годно. Главный вопрос - я с ним не сосну? А то может там еще больше костылей, чем Xamarin. Если все плохо, то я жабу перетерплю, только скажите.
>>830084
#52 #830084
>>830082
100% interoperable with Java™
Котлин (в отличие от xamarin) запускается на той же вирт. машине что и java.
Он компилируется в обычный java-bytecode и использует java библиотеки.
>>830093
#53 #830088
>>829938

>вроде нормально изучал ООП и джаву в частности


>че мне делать дальше?


Функциональное программирование + котлин
>>830093
#54 #830093
>>830088
>>830084
Котлиноеб, на вопрос про di ответь.

Алсо вот есть
((MyApp) getActivity().getApplication()).getMyComponent().inject(this);

Нету ли лучше варианта чтобы инжектить? Такая то монструозная конструкция.
>>830105
#55 #830105
>>829877

>нужно делать в onCreate(), но ведь тогда есть шанс словить NullPointer, ведь activity может быть еще не создана


Как если onCreate() вызывается после onAttach()?
https://developer.android.com/guide/components/fragments.html#Creating

В доке говорится что ты не должен обращаться к ее UI

> Note that this can be called while the fragment's activity is still in the process of being created. As such, you can not rely on things like the activity's content view hierarchy being initialized at this point. If you want to do work once the activity itself is created, see onActivityCreated(Bundle).



>>830093

>((MyApp) getActivity().getApplication()).getMyComponent().inject(this);


В чем проблема?, делаешь extensions-function к фрагменту
#56 #830120
>>829964
Да нет, ты просто смотришь, какие курсы входят в нанодигри и сам их проходишь. Все нанодигри состоят из набора курсов, которые доступны бесплатно. (материалы)
#57 #830134
>>829054 (OP)
Проебался с перекатом, спасибо.
>>830137
#58 #830137
>>830134
Без тебя перекат получился лучше.
>>830708
#59 #830138
Бля, каждый божий день заходя в pr я вижу этот тред и понимаю что нужно начать учить андроид. Но почему-то всё время забрсываю. Есть ли тут те кто сидел в энтерпрайзе? Как вы себя мотивировали?
мимо-2-года-в-энтерпрайзе
>>830144
#60 #830144
>>830138
Да забей, иди лучше блинов наверни и зависимости для спринг-бута настрой.
>>830146
#61 #830146
>>830144

>спринг-бута


Хуйня какая-то. Никогда ею не пользовался.
чего ты такой злой?
>>830160>>830184
#62 #830160
>>830146
Не спрингбут, тогда что?
play-framework?
>>830162
#63 #830162
>>830160
Автоконфигами не пользовался.
#64 #830184
>>830146

> 2 года фиксил баги в богом забытом тырпрайзе


> думаешь либо выпиливать либо перекатываться в мобайл


кому ты нужен со своей жабкой?
>>830193>>830203
#65 #830193
>>830184

Пора репортить котлиноебов
#66 #830203
>>830184

> в богом забытом тырпрайзе


Взлольнул. Такие-то надежды.
#67 #830357
Это уже, наверное, платина, но все же. Xamarin сильно хуже родной Java? C# знаю и вкатываться в Java как-то не хочется. Или все же придется?
>>830372>>830378
#68 #830372
>>830357
Сильно. Но твой мозг уже деформирован шарпом, тебя уже всё равно не исправить.
>>830378
#69 #830378
>>830372

> деформирован


А от жавы совсем разжижение видимо, ведь шарп как язык лучше.
>>830357
Перешел с шарпы на джаву даже ничего не читая.
#70 #830386
здравствуйте анончики
короче сегодня встал и как и говорил начал писать клиент для опенвезермапс но столкнулся с такой проблемой
приложуха будет выглядеть как список, в котром первый айтем большой и показывает текущую погоду, а под ним обычный список с кратким описанием прогноза на некст дни
также при клике на любой айтем, открывается новое активити, в котором более детально это все описывается
так вот какие проблемы:
1) использую RecyclerViewADapter хочу сделать первый айтем списка отличным от других, почитав кучу статей в гугле пришел вот к такому коду - http://pastebin.com/dCugi1Qv
но почему то подчеркивает ViewHolder и просит заменить его на RecyclerView.ViewHolder
и так же подчеркивает мои кастомные холдеры в onCreateViewHolder(то есть вот эти return new FirstViewHolder(firstView);)

2) скиньте гайд как обрабатывать клики в ресайкл вью, а то я чето пытался, но вроде не то делаю.
>>830454
#71 #830413
Аноны, вот у меня есть retainfragment в нем у меня presenter для этого фрагмента, допустим я начал запрос, свернул приложение и его тут же убил андройд, что будет с методом который выполняет запрос? Он просто оборвется или что?
>>830670>>830681
#72 #830454
>>830386
Итак, давай по порядку.
У тебя от чего наследуется?

>extends RecyclerView.Adapter<MyAdapter.ViewHolder>


Дженерик - это как раз твой вьюхолдер, то есть у тебя внутри MyAdapter должен быть

>public class ViewHolder extends RecyclerView.ViewHolder.



>как обрабатывать клики в ресайкл вью


У тебя ссылки на View внутри ViewHolder'а есть, itemView - это, по сути, основной элемент. Можешь на него onClickListener повесить, позицию возьмешь из getAdapterPosition().
>>830457
#73 #830457
>>830454
Не дописал про вьюхолдеры: если ты хочешь несколько разных сделать, то отнаследуй свои FirsViewHolder и NormalViewHolder от того, что я тебе сказал.
>>830491
#74 #830491
>>830457
а что тогда в дефолтном вьюхолдере писать?
ну тот который >public class ViewHolder extends RecyclerView.ViewHolder.
>>830496
#75 #830496
>>830491
Я тут сам чутка проебался, это если тебе есть что общего вынести. Если нет, все вьюхолдеры отнаследуй от RecyclerView.ViewHolder и в дженерике пиши extends RecyclerView.Adapter<RecyclerView.ViewHolder>.
Вот тебе пример из своих проектов: http://pastebin.com/qpXdKEw1
>>830501
#76 #830501
>>830496
а вот какая разница в этих дженериках
типо если я напишу
extends RecyclerView.Adapter<RecyclerView.ViewHolder>.

или RecyclerView.Adapter<MyAdapter.ViewHolder>.

просто только сегодня начал изучать ресайкл вью, до этого листвью поьзовался, но в интернеах гвоорят, что эта вьюшка уже умерла и пришлось изучать новоее
>>830507
#77 #830507
>>830529
#78 #830529
>>830507
а насчет обработки кликов
я в коде все верно сделал?
типо создать интерфейс сначала надо, потом повесить онКлики, и в активити где этот ресайкл вью уже прописывать функционал, верно?
#79 #830537
Да, это у тебя верно.
#80 #830539
А можно ли с помощью Dagger2 сделать так, чтобы можно было использовать скажем набор А методов заинжекченного класса из одного класса, набор Б - из другого, при условии что наборы А и Б не совпадают. Т.е. разделить методы по группам. Зачем мне это нужно ? У меня есть синглтон менеджера API, но было бы неплохо запретить например подгружать новости на экране регистрации, или регистрироваться на экране новостей. Заранее спасибо.
>>830542>>830563
#81 #830542
>>830539

> но было бы неплохо запретить например подгружать новости на экране регистрации, или регистрироваться на экране новостей


Как насчет того, чтобы ПРОСТО не вызывать эти методы?
>>830544
#82 #830544
>>830542
я их и не вызываю, но вроде как не комильфо, когда есть ненужные методы где-то, не ?
>>831619
#83 #830546
А если мне из вьюхолдера по клику нужно сделать запрос к сети, то где отписываться от результата, или даже сам процесс подписки должен случится вне холдера?
#84 #830555
Анонимусы, решил узнать, с кем и сколько я пизжу.
Реально ли сделать приложение, которое будет записывать:
1. кому звонил
2. сколько болтал

?
Ткните в пример кода, чтоб я понял, как перехватить вызываемый номер.

Спасибо. с меня 100500 нефти
>>830561>>830582
#85 #830561
>>830555
Бля, да это же можно просто выцепить из журнала звонков. Нахера что-то перехватывать?
мимо-из-энтерпрайза
>>830582
#86 #830562
А что значит привет клиент серверка? Нужно будет бэкенд писать или что? Я думал, что просто используется готовое апи для онлайн сервисов или как?
>>830566
#87 #830563
>>830539
Ты хуйню какую-то придумал. DI это вообще про другое.
#88 #830566
>>830562
Это значит что нужно читать писать делать клиент серверка готовый для онлайн сервисов.
#89 #830567
>>829639
Возможно ли сделать авторизацию с Google +, без необходимости для пользователя вводить пароль, или даже email?
>>830569
#90 #830569
>>830567
Да. Главнео чтобы аккаунт гугла был подключен в телефоне.
>>830573>>830592
#91 #830573
>>830569
А как это сделать?
>>830580
#92 #830580
>>830573
Смотри какая прикольная хуйня в интернете хранится
https://developers.google.com/identity/sign-in/android/start-integrating

может иногда стоит заглядывать подальше двача?
весело вы тут на андроиде кодите
>>830586>>830592
#93 #830582
>>830555
Вот этот энтерпрайз-господин >>830561 прав, андроид предоставляет доступ к журналу вызовов:
https://developer.android.com/reference/android/provider/CallLog.Calls.html
#94 #830586
>>830580
Зачем?
>>830588
#95 #830588
>>830586
Всю жизгь будешь спрашивать на дваче как заимплементить %фича_нейм%?
>>830595>>830601
#96 #830592
>>830569
>>830580
Благодарю
легитимный анон
>>830599
#97 #830595
>>830588
Да, а что?
>>830599
#98 #830599
>>830592
Не за что, няш.

>>830595
Всё ок.
#99 #830601
>>830588
Бляяя, чот представил как анон на собеседовании строчит в программач и спрашивает ответы.
>>830604
#100 #830604
>>830601
Всегда так делаю.
>>830605
#101 #830605
>>830604
Это ты ОП "Мы вам перезвоним" треда?
>>830606
#102 #830606
>>830605
Я эйчар.
>>830610
#103 #830610
>>830606
Червь-пидор > Соискатель, спрашивающий ответы в программаче на собеседовании > Эйчар, спрашивающий ответы в программаче на собеседовании.
>>830611>>830623
#104 #830611
>>830610

> ты

>>830615
#105 #830612
Котаны, каким место в MVP приходится адаптер от RecyclerView?
>>830614
#106 #830614
#107 #830615
>>830611
Ну да, ты, всё правильно.
>>830616
279 Кб, 512x512
#108 #830616
#109 #830623
>>830610

>Червь-пидор > Соискатель, спрашивающий ответы в программаче на собеседовании > Эйчар, спрашивающий ответы в программаче для собеседования > Эйчар, спрашивающий ответы в программаче на собеседовании.

>>830629
#110 #830629
>>830623

> Червь-пидор > Соискатель, спрашивающий ответы в программаче на собеседовании > Эйчар, спрашивающий ответы в программаче для собеседования > Эйчар, спрашивающий ответы в программаче на собеседовании > программист на Котлине

>>830631>>830637
#111 #830631
>>830629
А чего все хейтят котлин?
>>830635
#112 #830635
>>830631
1. "Вы просто ненавидите всё русское"
2. Говно без задач
>>830637>>830642
#113 #830637
>>830629
У вас же даже нет причин хейтить котлин. Если бы не шизик, возможно хотя бы попробовали.
>>830635

> Говно без задач


Таки приятный язык с меньшим количеством шелупони.
>>830643>>830659
#114 #830642
>>830635

>2. Говно без задач


Типо непопулярный? Так таких сейчас очень большое количество.
#115 #830643
>>830637
Чтобы понять, что говно - это говно, необязательно его пробовать.

>приятный язык


Да хоть идеальный. Без инфраструктуры, сообщества, развитой среды, легаси, поддержки со стороны крупного бизнеса, удачи и прочего это ничего не значит. А для себя я могу и на D писать.
>>830895
#116 #830647

> 2016


> Не писать на Котлине

>>830648>>830650
#117 #830648
>>830647

> 2016


> Писать на Котлине

>>830650
#118 #830650
>>830648
>>830647

> 2016


> Писать

>>830651
#119 #830651
>>830650

> 2016


>

>>830682
#120 #830655

>2016


>на носу уже ява 9


>уже есть и экспериментальная жим с набросками явы 10


>на андроиде не завезли нихуя кроме шестерочки))

>>830656>>830659
#121 #830656
>>830655

>жим


жвм*
#122 #830659
>>830637

>Если бы не шизик


Ты кого назвал шизиком?

>>830655
Ташема 8 ява уже есть, а 9ку постоянно откладывают на декстопе при том что фичафриз уже был
>>830661
#123 #830661
>>830659
Ты жопой читаешь?
>>830665
#124 #830665
>>830661
Ты всегда отвечаешь вопросом на вопрос?
>>830667
#125 #830667
>>830665
А почему ты спрашиваешь?
#126 #830670
>>830413
бамп
#127 #830681
>>830413
Проделай эксперимент.
#128 #830682
#129 #830700
Подскажите тупому васяну, где скачать вот тут
https://github.com/akexorcist/Android-RoundCornerProgressBar

С библиотеками не работал ещё, а с гитом подавно. Хотя нет, пикассо юзал, поэтому и ищу кнопку скачать.
ТАм просто jar файл кидал в папку библиотек и менял слегка манифест, а где тут - хуй знает.
>>830705>>830887
#131 #830706
>>830705
я видл. то есть, качать не надо?
>>830709
#132 #830708
>>830137
А ты не охуел?
>>830723
#133 #830709
>>830706
https://developer.android.com/studio/build/build-variants.html#dependencies
Включай мозг иначе тебе в js тред
#134 #830723
>>830708
С рождения. Завидуешь?
>>830733
#135 #830733
>>830723
Будто что-то хорошее быть охуевшим козлом.
>>830735
#136 #830735
>>830733
Будто что-то хорошее, вниманиеблядстовать на программаче.
>>830736
#137 #830736
>>830735
Кто тут вниманиеблядствует? Сказать спасибо вниманиеблятство?
>>830741
#138 #830741
>>830736
Ты акцентировал внимание на своей личности, давая понять, что ты — ОП-хуй предыдущего треда. На анонимной борде. Тут за это обоссывают, привыкай.
>>830745
#139 #830745
>>830741
Ты какой-то долбоеб если честно.
>>830756
#140 #830756
>>830745
Очень содержательно.
>>830760
#141 #830760
>>830756
Ну сам подумай, доебался до меня что я акцентировал внимание лол сказав спасибо, но сам акцентируешь внимание на том что ты создатель этого треда.
Вообще это второй тред который создан не мной вроде бы.
И вниманиеблядство это немного другое, раз на то пошло нуфаня.
И наверное на этом и закончим.
>>830778
#142 #830770

>Google разработал целое руководство по наименованию переменных. Например, закрытая переменная на уровне класса должна начинаться с символа m (member), а далее идёт понятное название с заглавной буквы


Где об этом можно почитать полностью?
>>830774
#143 #830774
>>830770
Не верь хуйне. Это стайл-гайд для исходников ОС Andoid. В приложениях это не используй. http://jakewharton.com/just-say-no-to-hungarian-notation/
>>830777
#144 #830777
>>830774

>В приложениях это не используй.


А вот и хомяки вортона подбежали.
м в контроллерах - удобно.
#145 #830778
>>830760

> сам акцентируешь внимание на том что ты создатель этого треда


Ёбнутый? Где я это говорил? Чини детектор.

> И наверное на этом и закончим.


Закончим на том, что что я пошлю тебя нахуй.
#146 #830781
>>830777
Какое аргументированное мнение. Тебя то нам в треде и не хватало!
>>830785
#147 #830782
>>830777

> в контроллерах


Это где? У меня презентеры.
>>830785
#148 #830785
>>830781
Ну так аргументируй свое мнение, потом я аргументирую свое.

>>830782
Ну раз ты даун и не знаешь что презентер разновидность контроллера, то кто тебе доктор? Зато вортона цитировать мастак.
>>830789
#149 #830789
>>830785
Аргументировал тебе за щеку. Проверяй.

По ссылке сходи и прочитай, даун.
>>830794
#150 #830794
>>830789
Я как раз читал, там нету аргументов против, просто хуйня в стиле "ну ебать венгерская нотация плохая" хуй пойми почему.
Главное как пишет коммьюнити, а она так пишет, и это достаточно удобно когда читаешь код.
Вот приставку s сам никогда не юзал, так как в контроллере статик поле это фу.
>>830800>>830801
#151 #830800
>>830794

> Главное как пишет коммьюнити, а она так пишет


Не пизди. Почти ни одно топовое опенсорсное приложение/библиотека не использует венгерскую нотацию.

> "ну ебать венгерская нотация плохая" хуй пойми почему


Тяжело тебе.
>>830812
#152 #830801
>>830794
Так а где об этом почитать можно?
>>830803
#153 #830803
>>830801
Тебе уже дали ссылку. Нигде.

There is no such thing as an Android Java style guide that provides any guidance on how you should write Java code. Most people referencing this non-existent style guide are referring to the style guide for contributions to the Android Open Source Project (AOSP).

You are not writing code for AOSP so you do not need to follow their style guide.
#154 #830805
Гугловский конфиг checkstyle кстати тоже против венгерской нотации https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml
>>830817
#155 #830812
>>830800

>Тяжело тебе.


Это тебе тяжело мозгов своих не иметь.
#156 #830817
>>830805
Тыкни пожалуйста носом в нужную строку.
#157 #830887
>>830700
Пиздец, не либа, а говно какое-то.
#158 #830891
>>830777
Просто добавляй "_"
#159 #830895
>>830643

> Без инфраструктуры, сообщества, развитой среды, легаси, поддержки со стороны крупного бизнеса, удачи и прочего это ничего не значит.



Дурашка, можешь отрицать реальность сколько угодно, пока тебя не раздавит ее катком.

Давай разберем поподробнее:

>инфраструктуры


>развитой среды


вся инфраструктура джавы к твоим услугам

>сообщества


ну ты почитай форум блять или реддит, зайди на стековерфлоу посмотри вопросы по тегу kotlin, или наконец в слэк, где 4K человек постоянно что-то обсужают.

>легаси


это-то тебе нахуя? Пройдет время появится и легаси неизбежно. До тех пор можно радоваться что все стильно, модно и по-хипстерски

> поддержки со стороны крупного бизнеса


jetbrains поддерживает, гугл палки в колеса не ставит, gradle пилит дсл для своих билд-скриптов

> удачи


ну тут даже не знаю, если экспоненциальный рост строк кода на гитхабе за последние три года,
а также самоподдерживаемый миф в коммунити, что котлин - это дохуя прагматично в отличие от скалы, но при этом не так мерзко как джава - что как не удача
#160 #830899
#161 #830909
>>830895
Один аргумент разрушит всё, что ты тут написал: если я сейчас зайду на хх, то сколько вакансий по котлу я найду?
Можешь не отвечать.

Да и зачем котёл, если каждый уважающий себя джавист и так знаешь скакалку[/spoller]
>>830911
#162 #830911
>>830909

До россиюшки все не скоро доходит, что поделать.
Вот тебе вакансия c required skills Android Developer TDD Kotlin Java CI 600£/day в UKшке, подрочи на нее (я уже)
http://www.reed.co.uk/jobs/android-developer-banking-600-per-day-java-tdd-ci/30132691
>>830946>>831055
#163 #830946
>>830911
Так это же ТАМ.
Им не всрался рандомный хуй из русского мухосранска.
#164 #830950
>>830777

>м в контроллерах - удобно.



>2016


>хранить состояние в объектах


>писать стейтфул контролеры

#165 #830952
Есть такая штука: фрагмент - список устройств UPNP. Что внутри: биндинг сервиса, коллбеки на 200 строк, recycler adapter.
Что будет лучше:
1. Сделать через MVP
2. Написать в один файл (ну а чё, а чё)
>>830975
#166 #830955
>>830895

>слэк, где 4K человек постоянно что-то обсужают.


Кстати, последователи Вортона могут там с ним пообщаться, он постоянно там отвечает по android или rx.
#167 #830975
>>830952

>коллбеки на 200 строк


У тебя дохрена связывающего кода - стоит над архитектурой подумать:
- вынеси бизнес-логику в сервисы на уровень модели (не android сервисы)
- вынеси UI код в кастомные контролеры
- юзай более выразительный язык
После того как размер фрагмента уменьшиться до ~100 строк, подумай еще разок.
#168 #830976
>>830975

>кастомные контролеры


контролы (view)
#169 #831009
>>830975
Это приведёт к увеличению кол-ва кода в несколько раз и усложнению архитектуры.
Не имеет смысла.
>>831011
#170 #831011
>>831009

> Любитель спагетти рассуждает об архитектуре


Погугли Single Responsibility Principle
Я тебе даже помогу: https://www.youtube.com/watch?v=Gt0M_OHKhQE
>>831082
#171 #831048
Смотрите какая хуйня происходит на каком-то ссаном Леново:

final HandlerThread thread = new HandlerThread(TAG, android.os.Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
mBackgroundLooper = thread.getLooper();
mWorkerHandler = new Handler(mBackgroundLooper, new BillingCallback(this));
mMainHandler = new Handler(Looper.getMainLooper(), this);

В результате thread почему-то не живой (!isAlive()) и getLooper возвращает null, соответственно мой хендлер для бэкграунда валится с нуллптр в конструкторе.

Есть какой-то вменяемый способ это предотвратить? Или же нужно расширять HandlerThread, у него переопределять onLooperPrepared и только после этого переводить мой класс в инициализированное состояние?
>>831116
#172 #831055
>>830911

>xx


>reed.co.uk


Ну ты понял, что обосрался, да? Да и в той вакансии требуется УЖЕ знать жабу. А ты предлагаешь пробовать котлин новичкам без знания жабы? Всякие котлы со скакалками востребованы обычно только в контексте с жабой, поэтому нехуй новичками советовать своё протухшее говно.
#173 #831075
Есть несколько RadioButton, допустим hui, pizda и custom, и ещё есть куча Checkbox, допустим, 1-10.
Надо сделать следующее: при выборе hui, все чекбоксы делаются неактивными и отмечаются чекбоксы 1-5, при выборе pizda то же самое, только 6-10. При custom можно выбирать какие хочешь.
Думаю сделать один обработчик на все чекбоксы, включать-выключать их программно в обработчике RadioButton.
Однако, у меня при любых изменениях в этих настройках текущий объект сохраняется в бд: поменял галочку - объект пересохранился, соответственно это сохранение находится в обработчике чекбоксов.
Получается, когда я выбираю варианты hui или pizda, я программно буду менять состояние чекбоксов, и получу как миниум пять последовательных сохранений объекта в бд.
Выглядит как-то уж очень уродливо. Есть ли способ программно поменять чекбокс без вызова его обработчика onChanged? Или может можно как-то отложить сохранение модели в бд до того момента, когда в ней "накопятся" изменения?
Или и так сойдёт, и я занимаюсь переоптимизацией?
#174 #831079
>>831075
Меняй сначала бд, обсерви ее изменения, а когда чет поменяется отображай новое состояние из бд.
>>831085>>831086
#175 #831082
>>831011
Спагетти - это вкусно.
#176 #831085
>>831075
Из-за того что у тебя кнопки работают пол разному, это >>831079 без толку, так как при выборе третьей кнопки изменения вносятся от каждого чекбокса отдельно, тут или кнопка confirm и только потом общая запись в базу. Или оставляй вставки по чекбоксам как есть, для первого и второго радио баттона можешь сначала отключить лситенер на чекбоксах, записать в базу, выставить все чекбоксы и потом вернуть старый лситенер.
http://stackoverflow.com/questions/15523157/change-checkbox-value-without-triggering-oncheckchanged
>>831090>>831188
#177 #831086
>>831079
Не понял зачем мне это, мне нужно новое состояние загрузить в бд, а не из бд.
#178 #831089
>>830975
Мне нужно забиндить сервис и приделать ему коллбеки.
У меня есть 4 коллбека, при их вызове надо добавлять и удалять устройства из списка.
Что здесь есть бизнес логика?
#179 #831090
>>831085
Костыльно, но лучше чем всякие confirm с точки зрения удобства. Так и сделаю, наверное, спасибо.
#180 #831092
>>831075

>Есть ли способ программно поменять чекбокс без вызова его обработчика onChanged?



Да, есть. Поставь ему null вместо листенера, потом поменяй состояние и верни листенер. Как приеду домой - поищу более красивое решение, оно у меня было где-то.
>>831111>>831188
#181 #831111
>>831092

>более красивое решение


Через рефлексию что ли?
31 Кб, 582x256
!!Z/WDZI.xDE #182 #831116
>>831048
Будет работать если заменить на new HandlerThread(TAG); ?

А такой (пик 1) android-тест пройдет?
>>831129>>831130
#183 #831129
>>831116
Нет, такой тест не пройдёт. Он даже не скомпилится.
>>831248
#184 #831130
>>831116
Не думаю что смена приоритета так сильно повлияет. Бэкграунд имеет приоритет чуть ниже чем дефолтный.
За ~год этот краш случился только на одном устройстве.

Сейчас проверю. Но все таки HandlerThread серьезно отличается от обычного Thread'a.
>>831148>>831165
#185 #831148
>>831130
То что после start() у тебя isAlive() возвращает false это бага прошивки или сайд эффект другой ошибки.
Может в тот момент у тебя закончилась память или было превышено кол-во одновременных тредов.

Если это воспроизводится не постоянно, я бы вообще забил бы на это.
>>831154
#186 #831154
>>831148
Я примерно так и сделал, если лупера нет, то ничего просто работать не будет.
#187 #831165
>>831130

> За ~год этот краш случился только на одном устройстве.


Есть решение: положить хуй. Абсолютно серьезно. Если на каком-то ноунейм бленово вдруг впервые за год происходит принципиально невозможная ошибка — это проблема этого самого бленово и его владельца. Завтра у него getResources активити будет null возвращать, а послезавтра у сервиса onBind перестанет вызываться. Никогда не ориентируйся на таких, просто совет не будущее.
>>831184>>832781
#188 #831184
>>831165
Кстати насчет ресурсов, на разных устройствах(леново, хуйвей и лж), некоторые даже с шестеркой периодически вылетала такая хуита:
Fatal Exception: android.content.res.Resources$NotFoundException: Plural resource ID #0x7f0c0000 quantity=32 item=few
at android.content.res.Resources.getQuantityText(Resources.java:290)
at android.content.res.Resources.getQuantityString(Resources.java:397)

Но блять у меня что в values, что в values-ru указано значение для few. В итоге просто поставил туда try...catch который в случае падения ставил строку для few.
#189 #831188
>>831092
>>831085
Короче, в документации андроида в лайаутах используется android:onClick атрибут, значением для которого является метод c сигнатурой void(View).
Этот метод используется как общий метод когда дохуя чекбоксов или радиокнопок (как у меня).
В итоге, когда программно меняешь чекбокс, этот метод НЕ вызывается. Сделал всё на этих методах - на каждое изменение, будь то выбор радиобаттона, меняющего целый набор чекбоксов, или же один чекбокс приходится одно сохранение в бд (просто обновляю в методе объект, сохраняю, потом обновляю UI).
Подводные камни?
>>831251
91 Кб, 858x492
#190 #831248
>>831129
Всем все скомпилилось.
>>831264
#191 #831251
>>831188
Хуита какая-то с этим onClick будет бля буду.
>>831260
#192 #831260
>>831251
Ну единственное что зашквар, так это то, что активити должна иметь этот метод. А вообе хуле эти черти в документации про него пишут тогда?
48 Кб, 644x374
#193 #831264
>>831248
Слыхал про лигатуры?
>>831278
#194 #831272
привет, анончики
я все тот же поц, который решил делать кдиент для опенвезермапс
возник вопрос при написании адаптера
а вот как мне в onBindViewHolder() заполнять айтемы данными, если у меня эти данные появятся только после парсинга джейсона и получения из него значений? или я чето не понимаю?
вот код адаптера - http://pastebin.com/XpFK7TPC
#195 #831278
>>831264
Што? Ты про стрелочки, ну хуй знает, может у тебя так в котлине заменяет, не ебу. У меня и пререндер для 24 апи не работает, пишет кококо запусти меня с 8 джавой, ты сука и так с восьмой запущен.
>>831272
Он не будет байндить если не уверен что на данной позиции у него что-то должно быть, если ты не указал в getItemCount() константный размер то он и байнд вызывать не будет. Ты должен создать/заполнить адаптер, только после получения данных.
#196 #831280
>>831272
ааа, кажись дошло
это типо мне надо все пропарсить, занести в лист, а в onBindViewHolder() вызывать геетеры
что то типо такого
WeatherForecast forecast = forecasts.get(i);
holder.country.setText(forecast.getCountry());
holder.temperature.setText(forecast.getTemperature());

?
>>831399
#197 #831281
#198 #831386
>>831272
Как получишь данные и вобьешь их в провайдер, в адаптере вызови notifyDataSetChanged() или аналогичный.
#199 #831399
>>831280
Нет. Ты неправильно понимаешь очень многие вещи. Пройди бесплатный курс от Гугла на Юдасити и твои вопросы отпадут. На этом курсе как раз показывают, как разработать погодное приложение.
>>831403
#200 #831403
>>831399
Че за юдасити?
>>831404
#201 #831404
>>831403
Udacity загугли
#202 #831457
Кто-нибудь уже опробовал RxJava 2 ?
>>831470
#203 #831470
>>831457
Недавно щупал, там нет ничего интересного для андроид.

Все полезное уже перенесли в rx 1.1.X
#204 #831477
Как думаете, сколько бабла рубит Уортон?
148 Кб, 809x809
#205 #831490
>>831477
Ты бы отсосал ему?
>>831508
#206 #831491
>>831477
Немного, косарей 150-200. Сам бы хотел такого работника, который дохуя времени пишет левый код, катается с докладами, пиарится, еще и в чатиках зависает?
>>831507>>831525
#207 #831507
>>831491
Если этот работник двигает технологию на уровне её создателей, и допиливает руками те решения, которыми захотят воспользоваться тысячи конкурентов по всему миру - да, хотел бы.

А если он ещё и занимается самопиаром - его хотят очень многие кроме меня.
#208 #831508
>>831490
Он всрат вроде
#209 #831520
Кто юзает crashlytics от fabric? Он бесплатный или там какой то бесплатный период?
>>831526
#210 #831525
>>831491
Он приарит не только себя, но и компанию, в которой он работает. Что-то уровня корпоративных блогов на хабре, только на порядок лучше.
#211 #831526
>>831520
Бесплатный. Подводные камни - нельзя отдельно записывать обрабатываемые исключения. Только в общий лог.
>>831601>>831625
#212 #831562
>>831477
Кто это?
>>831570
#213 #831570
>>831562
местный хуесос из тредика
>>831595
#214 #831595
>>831570
Сам ты хуесос. Я няша.

мимо Уортон
#215 #831601
>>831526
У них пометка non-fatal, так что все норм.
#216 #831619
>>830544

>вроде как не комильфо, когда есть ненужные методы где-то, не



не

мимо-написал либу с сотней методов из которых реализуются 20 потому что насмотрелся такого на тырпрайзной работе-крокодил
#217 #831625
>>831526
Можно, просто это надо специально прописывать. А так — то, что надо, краши может тебе даже на e-mail отсылать.
43 Кб, 100x110
#218 #831748
Аноны, поясните за Android Annotations.

Чем они плохи? На первый взгляд, они делают то же самое, что Butterknife + Dagger 2 и еще несколько приятных мелочей. Некоторые вещи реализованы проще (но это субъективное ощущение).

Почему же так мало обсуждений и примеров использования этой библиотеки? Есть какие-то подводные камни?
>>831838>>831850
#219 #831838
>>831748
это то говно, которое генерирует _MainActivity ?
>>831850
#220 #831850
>>831838
Да, оно самое.

>>831748
В основном все сводится к блядской генерации наследованных классов.

> Butterknife + Dagger 2


в этом плане лучше. Ну и часть, которая касается асинхронки, что-то уровня иннер асинктасков.
#221 #831904
1. У меня есть RecyclerView, который я заполняю в onPause, чтобы отразить изменения которые я мог внести в другой активити. Соответственно, скролл сбивается. Сохраняю состояние LinearLayout в onSaveInstanceState, работает во время смена конфигурации, но когда я редактирую итем в другой активити и возвращаюсь - скролл на первом элементе.
Можно это как-то исправить? Может не стоит заполнять в onPause?
2. git commit --amend полностью убирает промежуточную версию? У меня там нежелательные фразы были внутри файла, я их исправил амендом.
grep -lri "pizda" .git/* вроде ничего не показывает.
#222 #831938
>>831904
amend это то же самое что git reset --soft HEAD^ + git commit. да.
#223 #831941
>>831904
Как ты его заполняешь? Создаешь новый адаптер или переиспользуешь?
>>832002
#224 #831957
>>831904
Конечно не стоит заполнять его в onPause. Ты вообще понимаешь, когда и зачем вызывается этот метод?
>>832002
#225 #831960
>>831904
И как у тебя коммуникация между активити / фрагментами сделана? Сто процентов через жопу, раз тебе такие кульбиты выполнять приходится.
>>832002
#226 #832002
>>831941
создаю новый :^)
>>831957
в onResume, оговорился
>>831960
Фрагменты решил не использовать, есть две активити: лист и детейл. Обычный круд, читается и пишется в базу. Коммуникации толком никакой нет - передаю id в детейл, когда вызываю, назад ничего не передаю.
Назад перехожу кнопкой бэк, по-видимому onCreate может не вызваться, может поэтому я запихнул в onResume. Не помню нахуя я его туда сунул.
К тому же я хотел добавить сортировку, а значит редактирование потенциально может наебнуть порядок элементов.
Мне показалось проще просто наебнуть всё, и загрузить по новой из базы чем передавать всякую малафью туда-сюда, во-всяком случае для прототипа сойдёт и так.
Master-detail тоже не планирую, хуй знает нужна ли мне вообще какая-то коммуникация?
14 Кб, 320x480
#227 #832037
Кто-нибудь реализовывал кнопку закрытия приложения в Navigation Drawer? Перепробовал все, что нашел на стековерфлоу:
} else if (id == R.id.nav_exit) {
startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
getApplication().onTerminate();
android.os.Process.killProcess(android.os.Process.myPid());
super.onDestroy();
System.exit(0);
}
Ни один из вставленных выше методов не работает, ни по отдельности, ни вместе.
>>832116>>832175
#228 #832078
>>832002
И нахуй ты создаешь новый?
>>832092
#229 #832092
>>832078
Ну тогда мне придётся делать из него поле типа mAdapter и инициализировать его в onCreate. Но инициализировать без данных его нельзя, значит придётся совать данные в onCreate, делая реквест к бд, и потом сразу делать ещё один реквест в onPause и обновлять их через notifyChanged.
>>832097
#230 #832097
>>832092
Сделал короче ещё поле mHuitaList, в onCreate() инициализировал его как пустой ArrayList, обернул адаптером и сунул в RecyclerView. В onPause - mHuitaList.clear(); mHuitaList.addAll(db.getAll());
Выглядит говняно, но работает как я хочу.
>>832127
26 Кб, 521x519
#231 #832116
>>832037
Что же вы там такое говнокодите, что выходить должные через убийство процесса?
#232 #832127
>>832097

> Выглядит говняно


Оно работает так, как должно, а не через блядское пересоздание адаптера.
>>832264>>832381
#233 #832144
Не уверен туда ли пишу, но вроде больше некуда. Интересует прошивки ядра: что это, как это делается, где почитать наиболее популярноя человек далекий, только вчера возился с рут правами, до сих пор не понимая что и зачем. Еще слышал про утилиту фастбут и адбэто насколько я понял плагин для тс. Что это и для чего? Про .imq и как его юзать тоже интересно.
>>832147
#234 #832147
>>832144
Очень надо разобраться до завтра с этим, а почитать на будущее я уже в шапке поищу.
>>832168
#235 #832168
>>832147
http://xda-university.com/as-a-user/android-flashing-guide

Если совсем вкратце, то ядро лежит в разделе boot, который прошивается boot.img; замена ядра, соответственно, подразумевает прошивку нового boot.img. Раз ты это спрашиваешь, то, скорее всего, ядро c boot.img тебе придётся брать готовые.

Прошивается обычно из рекавери (режима восстановления), который запускается специфичной для твоего девайса комбинацией кнопок при загрузке либо командой adb reboot recovery. В рекавери заливается твой пакет обновления (zip с boot.img и скриптом установки) через adb push myyobakernel.zip, после чего устанавливается из интерфейс рекавери можно и через sideload.

Чтобы избежать сотен геморроя, лучше сбекапить разделы перед всеми операциями.
>>832628
#236 #832175
>>832037
В Android нет такого паттерна как "выход из приложения". Угомонись.
>>832179
#237 #832179
>>832175
Дауны заказчики к сожалению так не считают.
#238 #832185
>>832179
Твоя задача как разработчика аргументированно объяснить им всё это, а не безвольно плодить говно-UI.
#239 #832187
>>832179
И если тебе вдруг интересно, то у тебя иконки в дровере говно. А от пунктов "LogIn" и "LogOut" вообще себя медведям скормить хочется.
#240 #832264
>>832127
Просто раздражает куча полей в активити почему-то. Энивей, спасибо.
>>832413
#241 #832381
>>832127
Мне казалось, что намного лучше инкапсулировать коллекцию в адаптер, что бы всякие операции add/addAll/clear/set/remove вызывать на адаптере и сразу вызвать соответственные notify*.
>>832714
#242 #832413
>>832264
а писать говнокод не раздражает, найс
#243 #832457
>>832179
Попроси их найти выход в приложениях гугла, Вконтакте, телеграме, вотсаппе — том, чем они пользуются.
>>832611
#244 #832458
>>832002

>во-всяком случае для прототипа сойдёт и так.


Ты и в продакшен будешь такой же говнокод пихать, идиот.
#245 #832466
>>831904
Сохраняешь в onPause (а именно в это состояние у тебя перейдет фрагмент/активити, когда уйдешь с него) текущую позицию, а в том месте, где биндишь адаптер к RecyclerView, проверяешь: если есть данные и в позиции положительное число (каждый раз, когда обновляешь данные, можешь затирать отрицательным) — скроллишь recyclerview туда.
#246 #832470
>>832002

>onCreate может не вызываться


Уход на другую активити, расположенную впереди, не является поводом для пересоздания активити, андерстенд? Кажется, на каждом углу вешают пикчи с activity lifecycle, из которой очевидно, когда что вызывается.
#247 #832582
Хочу вкатиться в андроид разработку, но люто не хочу программировать на java, что посоветуете? Xamarin или React Native? Есть ли у кого-нибудь опыт в разработке реальных приложений с помощью этих иструментов? И завезут ли таки Swift?
#248 #832585
>>832582

> не хочу программировать на java


Мало ли что не хочешь.

> Xamarin или React Native


Сорта говна.

> И завезут ли таки Swift


Да, можешь начать изучать, через 3 месяца подкатят девтулзы, будешь на коне.

Пора бы из шапки пидорнуть всю хуйню про замарин с реактом и прочим говном. Котлин можно оставить.
>>832601>>832625
#249 #832601
>>832585

>Пора бы из шапки пидорнуть всю хуйню про замарин с реактом и прочим говном.


Там 3 строки про них, и вполне ваябл технологии.
#250 #832611
>>832457
кому-то захотелось именно как 2гисе, лол
>>832616>>833022
#251 #832615
>>832582
Пошел ты нахрен, козел!
#252 #832616
>>832611
Ну так узнай как в 2гисе, там конечно qt, скорее всего, но это не важно.
>>832954
#253 #832625
>>832582

>Xamarin или React Native


Попробуй Xamarin.Native если только под Android или Xamarin.Forms если в кросплатформу хочешь.
С формами будешь меньше верстать (это самое уеб### в мобайле), а больше код писать.

>>832585

>Пора бы из шапки пидорнуть всю хуйню про замарин с реактом. Котлин можно оставить


Тебя блин забыли спросить. В шапке ровно пару строк для информации.

местный котлин-фаг
#254 #832628
>>832168
Бут заливается скриптом из пк? Или скрипт на пк, а Бут на смарте как при установке суперсу или аналога? Где брать скрипт, если есть готовый Бут?

>adb push myyobakernel.zip


Что это?

какой же я тупой
>>832653
#255 #832629
>>832582
Кстати, можешь попробовать Flutter https://flutter.io/
Это проект разработчиков из гугл для создания кросплатформенных (android/ios) приложений в material-design.
Основной язык там Dart, а для UI используется подход из ReactJS/Native.

Ходят кстати слухи что на его базе и будут писаться нативные приложения для новой ОС от гугла (fuchsia).
#256 #832653
>>832628

>Бут заливается скриптом из пк?


push или sideload выполняешь с пека, да. Всё как при установке SuperSu, но только если boot.img зазипованный, а в META-INF/com/google/android лежит скрипт для его прошивки

> Где брать скрипт, если есть готовый Бут?


Если зазипованного нет, то adb reboot bootloader; fastboot flash boot boot.img
>>833342
#257 #832714
>>832381
Ты изобрёл ArrayAdapter.
>>832747
#258 #832747
>>832714
Для RecyclerView его нет.
#259 #832781
>>831165
Каков уровень пиздежа здесь по шкале от 0 до 10?
http://4pda.ru/forum/index.php?showtopic=763533
>>832786>>832796
50 Кб, 1440x364
#260 #832786
>>832781
Он сам себя что ли на собеседовании опрашивал? Вон, и пять лет разрабатывал (и никаких гитхабов хоть с хелловорлдом или "гитхаб по запросу"), и промоутером был (кто о его приложениях слышал? Работ нет), и одновременно и во всех областях (битуби, битуси) поработал. 8 из 10.
#261 #832796
>>832781
если все это было правдой, он бы не искал работу
#262 #832861
>>832582
Могу посоветовать Haskell. Очень легко и приятно будет писать на нём после Swift'а https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs
#263 #832954
>>832616
знаю что кутэ, может поэтому выход там и реализован, но сейчас уже похпоказал заказчикам ваши ответы, лол, угадайте где работаю))
#264 #832961
>>832954
Ты еще и работаешь?
#265 #832975
>>832954

>угадайте где работаю))


Нигде?
#266 #832983
>>832954
судя по тому скриншоту, нигде
>>833009
#267 #833009
>>832983
неплохая дедукция, но я не настолько дебил чтобы скринить не из песочницы
179 Кб, 1080x1920
#268 #833022
>>832611
И где здесь выход из приложения? Тут только разлогинится, это разные вещи.
>>833026>>833304
#269 #833026
>>833022
А у меня другой 2Gis
>>833054
#270 #833054
>>833026
Он сам из маркет обновился, закинь скрин.
>>833060
#272 #833064
>>833060
И где тут выход?
#273 #833065
>>832954
В/На Украине?
>>833353
#274 #833066
>>833060
Ну старая версия.
>>833071
#275 #833071
>>833066
А обновление-то не прилетело. Я проверил только что.
>>833074>>833075
#276 #833074
>>833071
На external SD небось приложение перенес, вот и не прилетело.
>>833078
#277 #833075
>>833071
Это то самое обновление, которое не устанавливается у пидоров просто.
>>833076>>833079
#278 #833076
>>833075
У тебя тоже не установилось?
>>833081
#279 #833078
>>833074
Как это влияет на обновления из стора?

другой анон
>>833101
#280 #833079
>>833075

>кнопка выхода


>для пидоров


Ебаааать.
>>833082>>833083
#281 #833081
>>833076
Так ты еще и тупой? У меня то установилось, я же скрин показывал.
#282 #833082
>>833079

>не для пидоров


быстрофикс
#283 #833083
>>833079
Ты тупой? Думаешь, здесь только двое вас — ты и тот даун с кнопкой выхода?
79 Кб, 1080x1216
#284 #833091
Аноны, какое крутое приложение (не игру), использующее Bluetooth, можно сделать?
>>833116>>833129
#285 #833101
>>833078
Может не обновляться.
>>833121
#286 #833116
>>833091
Может за тебя еще и код написать?
>>833123
#287 #833121
>>833101
Пруф.
87 Кб, 750x883
#288 #833123
>>833116
Можешь мне яйца полизать, если хочешь.
#289 #833124
Как Retrolambda установить на последнею Android Studio? Хули официальная инструкция из гитхаба не работает?
>>833131>>833140
#290 #833129
>>833091
Посмотрел на твой пик и придумал fleshlight с блутусом, детектит вхождение твоего члена и посылает сигнал на десктоп / мобилку, на десктопе же 3д порно игрушка, ну и понятно, что fleshlight по сути манипулятор типа мышь.
Тащем-то если приспособиться то и в шутеры какие-нибудь можно играть.
#291 #833131
>>833124
Всё работает, не пизди.
345 Кб, 637x614
#292 #833138
Аноны, доставьте гайд/пример, как писать резюме.
>>833141
#293 #833140
>>833124
K O T L I N
O
T
L
I
N
48 Кб, 604x427
#294 #833141
>>833143
#295 #833143
>>833141
Нисмишно же
>>833144
#296 #833144
>>833143
Иди нахуй с такими вопросами в android-треде.
>>833145>>833150
#297 #833145
>>833144
Почему такой злой?
>>833150
#298 #833150
>>833145
Потому, что см. >>833144
49 Кб, 465x604
#299 #833188
Котаны, подскажите новичку насчёт архитектуры приложения.
Это будет приложение для bluetooth устройства.
Всего несколько экранов: 2 экрана где отображаются параметры устройства. Переключение между ними производится свайпом и один экран с настройками этого самого bluetooth устройства.

Как я понял мне нужен будет сервис, где буду получать информацию от BT девайса. Но как весь этот UI организовать?
>>833239
#300 #833227
Есть соурс код программы, нужно скомпилировать апк файл, сам пытался но туплю чет, сделайте пожалуйста кто сможет
http://rgho.st/82HhSdffd
#301 #833239
>>833188
Берёшь и организуешь. Можно ViewPager и два лэйаута, можно два фрагмента.
#302 #833246
>>833227
Ну и какая тебе нахуй Scheme, если ты даже код на C скомпилировать сам не можешь?
#303 #833253
>>833227
Там deprecated NDK используется. Хуй знает, как его сейчас скомпилировать. Много чего менять и заново настраивать придётся.
>>833299
#304 #833255
>>833297
60 Кб, 1080x1920
#305 #833297
>>833255
Не работает
>>833304
#306 #833299
>>833253
Антош, очень выручишь, на ведро нормальных интерпретаторов схемки нет кроме этого, остальные без нормального редактора
#307 #833304
>>833022
>>833297
У меня всё работает. http://rgho.st/8N62TcZmq Сам не запускал.

Хули у тебя все скриншоты в розовых тонах?
>>833394>>833523
#308 #833314
>>829601
Лучше свой "пердак хохла via edition " доделать попробуй, а не занимайся хуйней со своим ниебаццо элитным контентом. Копираст мамкин, блядь.
#309 #833342
>>832653
Благодарю.
#310 #833353
>>833065
нет
>>833380
#311 #833380
>>833353
Пидора ответ.
#312 #833394
>>833304
Ты к разным аноним обращаешься. Лично у меня стоить Twilight, постепенно глушить экран и холодные цвета.
#313 #833401
>>830004
Ну,сначала да
#314 #833522
Пытаюсь въехать в dependency injection, mvp и лоадеры. Правильно ли я понимаю, что мне нужно создать лоадер в активити который создаст мой презентер и в случае переворота экрана будет брать презентер из кеша? Что в таком случае делать с сетевыми запросами? Нормально ли будет их просто вызывать из презентера?
>>833526
#315 #833523
>>833304

> AIO Downloader


Найс наебка, не знал что тут такие пидоры сидят. Сколько платят?
>>833868
#316 #833526
>>833522
Loader'ы говно предназначенное что бы по жидкому ходить в бызу данных или кеш. Если хочешь что бы все лежало в одной посуде то откажись от лоадеров в пользу Rx (c cache() и сохранением от поворотов в RetainFragment'e/Singleton'e)
>>833534>>833544
#317 #833534
>>833526
Уже давно хотел посмотреть Rx, похоже настало то самое время.
#318 #833544
>>833526
Сразу вопрос возник - подойдёт ли мне RxJava если мне нужно работать с сокетами?
>>833570>>833633
#319 #833570
>>833544
Тупой вопрос можно, но это несвязанные темы.
RX решает конкретную пробелему http://www.reactive-streams.org
#320 #833585
А есть компилятор на русском языке?
#322 #833851
Аноны, собираюсь делать анализ трафика звонков для себя. Как получить доги вызовов и длительность входящего и исходящего звонков разобрался. Вопрос: как будет лучше складывать длительности?в коде Активити типа вызов равно a+call length, или для каждого контакта лучше создать sql базу?

Планирую, что у меня будет листвью контактов всех, по нажатию на каждый будет длительность входящих и исходящих
>>833869
#323 #833868
>>833523
Пошел нахуй. Я писал, что сам не запускал. Анон писал, что у него сайт не работает. Я скачал апк и перезалил в другое место. Всё остальное меня не ебёт.
#324 #833869
>>833851

> для каждого контакта лучше создать sql базу


Прочитай про нормализацию.

А вообще, лучше тебе начать с официального курса Гугла на Юдасити. Многие твои вопросы отпадут.
>>833873
#325 #833873
>>833869
на юдасити проходил курс. научился клепать калькуляторы, запускать и убивать активити и создал в итоговом задании приложение(одобрили).
Это который бесплатный
>>833879
#326 #833879
>>833873
Там все курсы бесплатные. А ревью платные.

Я про продвинутый курс говорю, где погодное приложение создают.
11 Кб, 250x250
#327 #833886
>>829054 (OP)

Нюфани с платиной "Как мне вкатиться в Джаву?", вам сюда: https://stepik.org/course/Java-Базовый-курс-187/
#329 #834008
>>833936
Просто юзвери мудаки, очевидно что val это то же самое что и final. Иммутаьельность что бы совсем как const const * ты в джавке никак не имплементируешь.
#330 #834127
>>833936
Молодец, аноняшь, давай больше статей для нюфагов по котлину
#331 #834148
>>833936

> val does not mean immutable, it just means readonly


А это было кому то не очевидно? Достаточно доки открыть.

> https://kotlinlang.org/docs/reference/properties.html


> These can be declared as mutable, using the var keyword or read-only using the val keyword

>>834183>>834408
#332 #834152
Котаны, как понять, что пора юзать MVP и от этого будет только польза?
>>834184
#334 #834184
>>834152
Раз ты задаёшь такие вопросы, то не пора.
#335 #834185
Признавайтесь, это один из вас наговнокодил? https://toster.ru/q/350340
>>834193>>834201
#336 #834193
>>834185
Не, не думаю что такие ебланы есть в нашем треде. Разве что с кнопкой выхода.
>>834202>>834398
#337 #834201
>>834185
Пароль же можно хранить в шифрованном виде, даже расшифровывать не нужно.
>>834202>>834408
#338 #834202
>>834193

-> >>834201

А ты говоришь, что нету...
>>834203
#339 #834203
>>834202
Может аргументируешь?
#340 #834204
Короче поясняю для даунов ИТТ.
Если юзать односторонее шифрование для пароля то хранить ты его в зашифрованном виде можешь хоть на экране телефона, правда немного с алгоритмом повыебыватся нужно.
Как оно работает. Человек вводит пароль, ты его шифруешь и на выходе сравниваешь с тем что у тебя в шаредах сохраненно.

И да, так просто никто твой пароль не расшифрует, как и ты сам впрочем.
>>834206>>834408
#341 #834206
>>834204
Какое нахуй "одностороннее шифрование"?
Ты вообще вопрос по ссылке читал, болезненный? Ему этот пароль нужно для АПИ дропбокса передавать.

> Короче поясняю для даунов ИТТ.


Даун поясняет для даунов. Так и живём.
>>834212
#342 #834212
>>834206
Таки проебался и читал в пол силы, все таки утро субботы.
Извините.
#343 #834218
>>834183

>Так было не всегда


Так было всегда.

Это называется "исправить неоднозначности в документации".
>>834220
#344 #834220
>>834218
Никогда такого не было, и вот опять!

> исправить неоднозначности в документации


> А это было кому то не очевидно?

#345 #834355
Анон, сколько времени может занять путь с 0 до андроид джуна, если ты человек со средними способностями и тратишь на это примерно 4 часа в день?
>>834371>>834379
#346 #834371
>>834355
Джва года.
#347 #834379
>>834355
Тебе лет то сколько, стажерик?
Вкатывайся лучше в js/php или тестирование, на это способная любая макака с улицы.
#348 #834388
#349 #834391
>>834379
21
В общем лучше не выебываться и идти в верстка-тред?
>>834396
#350 #834396
#351 #834398
>>834193
Что плохого то?
У меня например foreground сервис завершается из уведомления или через кнопку "завершить" в приложении.
Ей кстати довольно ребко пользуются, но все равно она нужна.
>>834408
#352 #834408

> Не, не думаю что такие ебланы есть в нашем треде



И после этого сразу же перепись ебланов в ответах >>834201 >>834204 >>834148 >>834398
#353 #834417
Двачаны, реально ли запилить лэйаут активити где-нибудь в облаке?
ЧТоб xml файл внешнего стиля приложухи хранился где-то типа на дропбоксе.

Вдруг, например, я решу в приложение вкатить баннер рекламный, тогда мне обновлять не придётся его в плэймаркете, а просто файлик в онлайне добавлю имэджвью
>>834422>>834449
#354 #834422
>>834417
Перепись ебланов продолжается.
#355 #834449
>>834417
Можно воспользоваться xml парсером, и вызывать программное создание вьюшек при парсинге файла, прямо как андроид и делает. Но идея дерьмо, апрув в маркете очень быстрый, никуда твой баннер не убежит. Тем боеле тебе всерано нужно будет поставить галочку что в приложении есть реклама, что бы тебя не пидорнули.
#356 #834452
Сука! Создал Вьюпейджер, чтобы свайпать фрагменты, теперь хуй прикрутишь стандартными методами переходы автоматические. ебанутые фрагменты, блять. Гугл не подумал, что они хоть и стильные, но костыльные пиздец?

Вернусь на активити, ну их нахуй с этим вьюпейджером не поддерживающимся ничем
>>834454
#357 #834454
>>834452
Всё там работает, scrollToPosition().

Активити-то тут причем, какая связь с ViewPagerом, ты ебанутый?
>>834455
#358 #834455
>>834454
он у меня в фрагментах.
ненавижу, блять, работать с фрагментами.
То ли дело с активитями и переключаться между ними и данные передавать. Всё просто и удобно.
а тут блять говно собачье сука.

нет бы просто по клику интент(эта активити, нужная активити).
рисуй блять говно
>>834458
#359 #834458
>>834455
Ты точно ёбнутый.
#360 #834668
Посоны, я вам опенсорса принёс. http://pastebin.com/ytLnbAxw
Всё для анона.
22 Кб, 400x400
#361 #834704
Аноны, а что по поводу вот этой хуйни думаете? https://github.com/yigit/android-priority-jobqueue

Её автор на последнем I/O выступал.

Годная вещь или нет?
#362 #834709
ананасы, кодинг под андроид уже перестал быть уебищем? пробывал вкатится, но в итоге послал джавапердолинг нахуй и запилил все на кут.
>>834712
#363 #834712
>>834709
Не перестал, ужас как всё уёбищно.

А вот формочки на JS писать - одно удовольствие! Сходи в JS-тред, тебе раскажут.
>>834723
#364 #834723
>>834712
ну у меня на гуглплей две проги, одна на кут, вторая на хтмл5+яс, на этом я послал андроид нахуй.
>>834728
#365 #834728
>>834723
Правильно сделал, теперь оставь тред помирать спокойно.
>>834744
#366 #834744
>>834728

> теперь оставь тред


я просто хотел убедится, что эти все андроид-говноеды не боты.
#367 #834806
Хочу сделать свою либу для bluetooth low energy, чтобы упростить обмен данными до: le.write(deviceAddr, char, data, CALLBACK);
Но как предотвратить вызов коллбека, который был создан в активити, которая уже уничтожена к хуям?
>>834824>>835840
#368 #834824
>>834806
1) Возми за основу пример из Android SDK с CancellationSignal
https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String, java.lang.String[], android.os.CancellationSignal)
2) Возращай объект к которому можно подписаться или отписаться. Отписывайся в onDestroy()
Посмотри как это реализовано в Observable<T> в библиотеке RxJava
>>834853>>834862
#369 #834827
Авторитетное мнение из жаба-треда:

>>834810
>>834838
#370 #834838
>>834827
Толсто
#371 #834853
>>834824
Вот кстати в моём случае нужно отписываться только от тех коллбеков, которые используются в активити, которую хотят уничтожить.
Остальные при этом трогать не нужно.

Пойду потискаю кунца и спать. Завтра почитаю.
>>834862
#372 #834862
>>834853
Несколько правок по >>834824

Ссылка на первый пример с rawQuery
https://d.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String, java.lang.String[], android.os.CancellationSignal)

Пункты 1 и 2 это альтернативы, а не последовательность действий

Подписывание в RxJava идет через вызов метода subscribe(параметр: лямбда-колбек).
Это метод возвращает объект Subscription у которого можно вызвать метод unsubscribe() что бы отписаться.

Кстати в RxJava 2.0 они немного изменили название классов, можешь сравнить с версией 1.x.
>>834938
#373 #834867
Кто-то копался как работает FacebookSDK, вот я недавно копнул и сука блять боже мой что за говно нахуй! Короче что бы получать результат, например логина, нужно зарегать колбек в колбек-менджере. Но вот беда, когда ты регаешь колбек он добавляется в СТАТИЧЕСКИЙ Map, то есть если ты сделал колбек анонимным классом то все, активити будет висеть и никто его не уберет. А метода отписки они не сделали, ну как так можно, или может я что-то путаю и зря плююсь?
>>834869>>834942
#374 #834869
>>834867
У фейсбука весь софт говно. Их опенсорсные библиотеки такие же. По возможности избегай.
#375 #834938
>>834862
Посмотрел - идея понятна.
Только отписывание подписок здесь выглядит красиво, пока этих подписок мало.
Если их дофига наверное проще сделать в onDestroy: foreach(Subscription s : subscriptions) if(!s.isUnsubscribed()) s.unsubscribe();
>>834954
#376 #834942
>>834867
Я тебе даже так скажу: там колбэк дергается в onActivityResult, можно было оставить обработку там (или просто вызов метода), но нет, надо было захуячить туда колбэк. Нахуя? Да просто))
Вксдк страдает той же сранью, но хотя бы ссылку не держит.
>>834947>>834985
#377 #834947
>>834942
Вообще то если у тебя залочен поворот, то в 99% случаев никакого пересоздания активити быть не может.
Тем более у fb окно показывается с прозрачностью, а в таком состояние android не имеет право удалять нижележащие активити.
А код в итоге получается куда как проще.

Недавно делал игру под андроид, там было только одно активити и то всегда в лендскейпе.
Вот тут пришлось поебаться с VK что бы переделать это:
1) вызови VK.login
2) в активти переопредели метод onActivityResult
3) в нем обработай нужный результат и вызови сохраненные где-то колбеки

на один метод
AuthService.login(): CompletableFuture<User>
>>835024>>835050
#378 #834954
>>834938
Для этого есть CompositeSubscription в который можно сложить все подписки и одним методом отписать сразу все
#379 #834985
>>834942
Да, про это я в курсе, действительно вк в этом плане посиупила лучше. Увы что там что тут костыли.
#380 #835024
>>834947

> CompletableFuture<User>


Эт чо, Guava?
>>835182
#381 #835050
>>834947

> А код в итоге получается куда как проще



Ну да. Дернуть onActivityResult + дернуть колбэк проще чем просто дернуть onActivityResult, ага.
>>835182
#382 #835182
>>835024
https://github.com/streamsupport/streamsupport

>>835050

> 2016


> хранить бизнес логику в активити

>>835324
#383 #835324
>>835182
Кто тебе мешает из активирезульта дергать метод презентера с передачей результата?
>>835355
#384 #835355
>>835324
1) приходится повторять это глупый код из презентера в презентер (если авторизация есть на нескольких окнах)
2) логика размазывается по множеству разных классов (а нужно ее инкапсулировать)
3) она становится хреново НЕ кросплатформенной, а писать тупо под Android уже давно наскучило.

В той же iOS я просто дергаю метод с колбеком (или промисом) и все работает асинхронно.
В Android же мне приходится ебаться с "жизнеными циклами" и переоределением методов внутри активити.

Надеюсь в своей новой ОС гугл исправит эти недостатки.
Вроде бы уже заняли 90% рынка, теперь пора делать по нормальному.
>>835431
#385 #835376
>>829054 (OP)
Вечер в хату, боги кодинга! Взломайте бота, аноны: http://travibot.com/ru/
>>835386
#386 #835386
>>835376
Сюда ли ты зашёл, пацанчик?
>>835395
#387 #835395
>>835386
В чем проблема, ты только в хеллоуворды умеешь?
>>835504
#388 #835431
>>835355

> в новой своей ОС


Какой же ты долбоеб.
>>835499
sage #389 #835499
>>835431

>Какой же ты долбоеб.


Эх люблю сосач, такие то аргументированные беседы :3
#390 #835504
#391 #835840
>>834806
Ояебу. Видимо будет у меня куча HashSet'ов.
К примеру в андроиде есть один большой коллбек на ~10 методов, типа onWrite, onRead и оттуда надо будет дернуть listener, от соответствующего устройства. Ну да пох, это та самая "низкоуровневая" прослойка, которая должна работать. А как она реализована - пох.

Идея с subscription в стиле RxJava крайне хороша и пока не видно недостатков.
Подразумевается ли, что после вызова unsubscribe() произойдет не только отписка коллбека, но еще и отмена той самой асинхронной операции?
>>835841
#392 #835841
>>835840
Нет, вызов unsubscribe только отпишет подписчика.
#393 #835880
Антуаны, звонил коллега с Рязани. Спрашивали погромиста для разработки приложений на ведро и ios. Мне нахуй ничего не надо, я от этого далёк, но мож кому работа нужна. Если что напишите на bi@x/tardenkoANUSyandCqWexPUNCTUMr=9>u я контакты скину и тех задание там.
>>835881>>835892
#394 #835881
>>835880
По удаленке сессно.
#395 #835891
Есть ли возможность хранить состояние системы в сервисе, или это костыли и антипаттерн?
У меня есть sticky сервис, который должен иметь опредлённое состояние, которое ему дают при инициализации. Также мне нужен доступ к этому сервису из любой точки программы.
Сделал синглтон, в нём создаю сервис через bindService, и соответственно имею на него ссылку mService.
Я ожидал, что синглтон будет жить всегда, и хранил в нём состояние, а сервис просто пересоздавался.
Однако, если убить программу, то уничтожаются все мои объекты, а сервис потом просто пересоздаётся самостоятельно, естественно, без старого состояния. Потом подумал хранить ссылку на синглтон в сервисе, а а синглтоне на сервис (пиздец, можно так вообще делать?), но это всё равно не помогает.
Пока писал, ещё кое-что понял: для меня sticky сервис это то же что и вечно работающий демон, не зависящий от окошек программы. По-видимому андроид иного мнения, и я не должен ожидать ничего долгоживущего. Может стоит сохранять состояние в shared prefs в onDestroy, если сервис нормально не просили завершиться через соответствующий метод? onDestroy гарантировано вызывается?
>>836027
#396 #835892
>>835880
А на чем нужно писать можно на котлине?
>>836042
#397 #835918
Какую лучше ORM использовать для SQLite? И стоит ли вообще использовать ORM?
#398 #835920
>>835918
Стоит. Какая тебе больше подходит и нравится.
#399 #835928
>>835918
Стоит или не стоит это вто выбор. Я напрмиер и голым SQLiteOpenHelper'ом и Realm'ом пользовался, вот сейчас StorIO ваще нормас. А с ОРМ как-то не сложилось.
#400 #835946
Простите, а СторИО не ОРМ? Часто слышу о ней. Она действительно годная?
>>835975
#401 #835975
>>835946
Нет не ОРМ, это удобный фасад который закрывает от тебя кишки SQLiteDatabase и ContentResolver'a. Реактивный и вообще заебись с rx идет.
#402 #835993
Помогите нюфагу
Вот ак я передаю значения с едитТекста в другую активность

EditText editText = (EditText)findViewById(R.id.editText);

Intent intent = new Intent(MainActivity.this, GraphActivity.class);

intent.putExtra("ALPHA", editText.getText());
startActivity(intent);

А вот так я его принимаю:

double alpha = getIntent().getExtras().getDouble("ALPHA");

Но почему-то не работает, я подозреваю, что вторая активность принимает null, т.к. если я задам значение вручную то все работает, а если через интент - не работает.
>>836013
#403 #836013
>>835993

>активность


Не надо так.
Задумайся что возвращает getText(). Праивльно, оно возвращает Editable, но никак не double, а ты пытаешься достать именно дабл. Ты сможешь достать оттуда CharSequence. Но дабл не сможешь, так как там даже в логе видно класс каст эксепшн.
>>836018>>836025
#404 #836018
>>836013
А как мне тогда передать дабл в другую активность, использовать другой вью?
#405 #836025
>>836013
Благодарю анон, сделал через decimal editText, сработало.

>>836018
>>836149
#406 #836027
>>835891
Вообще попробовал разное, оказалось у меня sticky сервис вообще не перезапускается.
Раньше я создавал сервис в активити, а сейчас создаю в обычном классе, использую applicationContext. Если убить приложение, то onDestroy не запускается и сервис не перезапускается.
Что делать?
>>836050
#407 #836042
>>835892
Котлин под ios? Ты даун?
>>836048
#408 #836043
>>835918
Не стоит. SQLite и StorIO - выбор настоящих мужчин.
#409 #836048
>>836042

>Котлин под ios?


Няшь, хули ты лезешь в тему в которой не разбираешься?
>>836053
#410 #836050
>>836027
блядь, дело даже не в контексте. Если создавать сервис в активити, то каким-то магическим образом он получает возможность пересоздаваться. Кормил ему application context, всё равно перезапускается. Хуйня какая-то.
#411 #836053
>>836048
Разобрался тебе за щеку.

Да хоть на Хаскелле пиши. Мне так-то поебать. Я просто считал кое-что.
eblansCount++;
#412 #836056
>>835918
Можешь попробовать greenDAO, у неё минимальный оверхед за счёт генерируемого по схеме кода.
#413 #836149
>>836025
>>836018
Почему бы тебе просто не передавать Double.parseDouble(str)?
#414 #836150
>>835918
Может в твоей задаче ORM и не нужна.
Есть к примеру cupboard - он генерит таблицы из классов.
>>836159
#415 #836159
>>836150
Так любая орм поступает
#416 #836202
>>836018
оставить putExtras() и, как выше сказали, преобразовать строку в double.
#417 #836230
Чуваки, что в андроиде с картинками для разных разрешений мутить?

Ну типо мне
1) Делать штук по 6 копий одной картинки для разных dpi от ldpi до xxx_super_pooper_hddpi?
2) Хранить один здоровый пикч, но юзать уменьшенную битмапу?
3) Забить на все и сетать один большой пикч как есть, в заданный размер ImageView (типо 20dp на 20dp) - и бояться что когда-нибудь апа начнет жрать под 100 оперативки?

Само собой я успешно внедрил 3й вариант. Но все же, как правильней?

Погодное приложение, мучу иконки (дождь там, снег, град). Примерно 1/6 экрана пикча занимает.
>>836234>>836236
#418 #836234
>>836230
Используй вектор. Есть отдельная библиотека для SVG.
Если картинка у тебя не векторизуема, значит у тебя устаревший не материал дизайн.
>>836239
#420 #836239
>>836234
Не, не, все должно хорошо в вектор зайти, я и сам хотел спросить.

Можешь подсказать чем в вектор превращать (не в ручную ведь, надеюсь?). И хорошую библиотеку для работы с svg?
>>836246
#421 #836241
>>836236

Спасибо, ознакомлюсь
#422 #836246
>>836239
Лучше что я встречал это Adobe Illustatror, там есть векторизация картинок.

Хорошей не знаю, последний раз интересовался этой темой года 3 назад.
Юзал эту либу (вроде) https://github.com/japgolly/svg-android

Вот кстати интересный сайт для перевода SVG -> Android VectorDrawable
128 Кб, 340x340
#423 #836247
Юнит-тесты в блядском Ксамарине

Аноны, как правильно настроить проекты для юнит-тестирования приложения? Есть проект, состоящий из трёх "подпроектов" MyApp (shared code, MVVM), MyApp.iOS и MyApp.Android.
По идее, чтобы всё это дело можно было протестировать, нужно создавать отдельные тестовые подпроекты это ж надо было такую хуйню сделать, а?. Типа так: MyApp.Test, MyApp.iOS.Test и MyApp.Android.Test.

Только что-то не работает нихрена. Постоянно разные ошибки, код из shared-части не находится, или не инициализируются сервисы. Версии NUnita нужны разные у разных подпроектов (NUnit, NUnit Lite и NUnit Xamarin Runner), тоже не совмещаются вместе..

Есть тут кто-то, кто смог сконфигурировать всю эту хуиту вместе? Или хотя бы, есть какой-нибудь пример? На гитхабе пусто. Есть только две куцые статьи, которые не сильно помогают https://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/touch.unit/
https://github.com/nunit/nunit.xamarin

Ненавижу это говно
>>836255
#425 #836250
>>836246
Это хуйня из прошлого века.

Поддержка векторной графики есть в Support Library начиная с версии 23.2. Вот как пользоваться: https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88

Но! Не стоит злоупотреблять векторами. Их отрисовка на слабых устройствах может занять ощутимое время.
>>836251>>836265
#426 #836251
>>836246
>>836248
>>836250
Большое спасибо парни.

>>836250
Хм, а я чот думал что вектор наоборот производительней будет.
#427 #836255
>>836247
Недавно ебался, вроде жить можно.
Правда у меня unit-тесты только на бизнес логику (и "andorid"-сервисы я не юзаю).
Для интеграционного тестирования у меня UITests.
>>836259
#428 #836259
>>836255
Не посоветуешь ничего? Статьи, доки, примеры? Или свой опыт, может есть секреты какие?
Я уже что-то долго с ним ебусь, но успехи пока не очень.
>>836364
#429 #836265
>>836250
А можно просто включить генерацию из вектора пнгшек, чтобы не лагало.
>>836270>>836271
#430 #836270
>>836265
Ну и в чем смысл векторы тогда использовать? Если так делать, то только время на генерацию каждую сборку будет тратится дополнительное и всё, никакого профита.
>>836290
#431 #836271
>>836265
Это как, не подскажешь?
#432 #836290
>>836270
Тем, что тебе не надо самому подготавливать все эти hdpi, mdpi.
К тому же, вектор изменяется прямо в студии, если тебе нужно поменять цвет иконки например, тебе не надо лезть в редактор, изменять и создавать под каждый dpi.
И генерация пнг довольно быстрый процесс, куда быстрее того же minifyEnabled'a.
Также, тебе в этом случае не надо использовать srcCompat, а пользуешься обычным src как всегда.
#433 #836297
>>834379

> Вкатывайся лучше в js/php или тестирование, на это способная любая макака с улицы.


В разработку под мобилки — тоже, лол.
>>836346
#434 #836346
>>836297
Чет я не видел девушек-мобильных девелоперов (ладно одну видел, но она была очень слабой).
А вот фронтендщицы/тестировщицв валяются на каждом углу.
#435 #836364
>>836259
Да ХЗ, я вообще начинал с UITest'ов и уже после того как закончил всю программу.
У меня большой плюс что после первой версии дизайн слабо менялся, но при этом я мог как угодно рефакторить код.
Буть у меня изначально юнит-тесты, это был бы большой геморрой, менять их после каждого рефакторинга (а я эт дело люблю).

Сейчас сам вляпался, когда оказалось, что нужно протестировать работу WebView через AndroidTest.
Вот это жопа, NUnitLite хреново работает с async/await, на форуме писали о багах, но походу фиксить пока не собираются.
Как вариант там предлагают альтернативную библиотеку, но она конфликтует с моей версий AndroidSupport.
По этому я решил написать своей мини-фреймворк для этой одной задачи.
>>836588
131 Кб, 1330x534
124 Кб, 1330x522
#436 #836475
Мда, просто мда. Я тут пару тредов назад писал что у меня превью для 24 не рендерится, мол запустите с 8-й джавой, она у меня указано дефолтной, еще и STUDIO_JDK прописал, ну короче нашел я корень зла. На маке, если студия видит 6-ю джаву, она будет работать на ней, что бы ты не делал. Сравните скрин с 6-й джавой, и с 8-й.
>>836511
92 Кб, 879x515
#437 #836510
Поясните пожалуйста за rx-овский zip:
1) Правильно ли я понимаю, что в коде на пике zip работает следующим образов: идет асинхронное выполнение запросов, после чего идет ожидание того, пока придут оба ответа, или же запросы выполняются поочередно ?
2) Как преобразовать стремный if-пиздец на пике ( с response/result ) во что-то красивенькое ?
3) При использовании zipWith сначала выполнятся запросы до него, а после этого запрос, присоединенный zipWith, или же нет ?
#438 #836511
>>836475
Пользуюсь маком, стоит и 6 и 7 и 8, студия видит 8 и отлично работает
>>836519
#439 #836512
>>836510
p.s. Так как требуется добавить еще один запрос после выполнения предыдущих, который юзает те же входные данные, уточняю за zipWith, в коде его нету, ваш Кэп
#440 #836519
>>836511
Ну и как ты это сделал? Как только я удаляю шестую она переключается на 8, как возвращаю ее из корзины - сразу на нее садится. Но дело в том что на 6-й шрифт лучше.
#441 #836545
>>836510
http://rxmarbles.com/#zip

1) да

2) использовать RuntimeException'ы.
retrofit.update().doOnNext(x-> if (x == null) throw new RuntimeException(ERROR_UPDATING))

Хотя есть мнение, что такое нужно делать через
retrofit.update().flatMap(x-> if (x == null) Observable.error(new RuntimeException(ERROR_UPDATING)))
else Observable.just(x)

3) Хуй знает, но судя по картинке, поведение то же самое
http://reactivex.io/RxJava/javadoc/rx/Observable.html#zipWith(rx.Observable, rx.functions.Func2)

Алсо, нахуй ты из сабскрайба зовешь другой сабскрайб, если у тебя есть божественный flatMap.
Оберни getAuthData в Observable.create, в котором ты вызовешь subscriber.onError при unathorized exception.
#442 #836588
>>836364
Слушай, а можешь показать содержимое своего MyApp.Android.Test/packages.config?
#443 #836594
Можно как-то спиздить элементы из PreferenceFragment? Чтобы всё так няшно было с разделителями, диалогами итд, но чтобы с данными я самостоятельно работал?
>>836634
#444 #836634
>>836594
Можно
>>837155
#445 #836663
>>836510
А что ты делаешь c Subscrption которые кладешь в subscrption?
#446 #836665
Ребзя, хожу-смотрю сегодня весь день "какие файлы нужно запилить в .gitignore", но нахожу каких то бомжей и помоечников, которые хуярят абы было. начал разбор с Gradle файлов, но каждый бомж говорит свое.

нашел один общий, который гуляет по интернету - скопипастил его, ну ок,чо.
один из бомжей талдычит, мол существует всего 4 основных файла, которые должны быть в проекте: gradlew, gradlew.bat, и еще какая то залупа со второй на пару. первый служит запускатором скриптов gradle для юниксоподобных систем, второй для винды, другие два чесн, не помню что делают, потому что проверив эту уебскую теорию и залив на гит свой проектик - gradlew.bat взял и обновился, будто я внес ему какие то изменения. ну я ахуел, думаю - идите вы нахуй, пидарасы.

и дальше в последствии несколько часов еще беспрестанных поисков, нашел ток вот это, вроде самая логичная хуйня, только объяснил бы мне кто где, какие Gradle файлы НУЖНЫ в проекте, а на какие можно класть хуй

.gradle
/local.properties
.DS_Store
/build
gradle.properties
.idea
.navigation
/captures
*.iml
gradlew
gradlew.bat

имл файлы - файлы моего интеллижа, ок - нахуй не нужно, так же как и папка идеи.

вот с остальным я хз
>>836725>>836740
#447 #836677
http://openweathermap.org/ теперь требует авторизацию?
>>836728
#449 #836728
>>836677
Там написано. Получаешь api key и вперёд, можешь снова пердолить свой велосипед.
#450 #836740
>>836665

> gradle.properties


Можешь оставить, можешь убрать

> gradlew


> gradlew.bat


Должны быть в репозитории.

Выше уже скинули ссылку на стартовый набор.
>>836742>>836809
#451 #836741
>>836725

>Ты долбоёб?



>только объяснил бы мне кто где, какие Gradle файлы НУЖНЫ в проекте, а на какие можно класть хуй



ТЫ долбоёб?
изначально этим игнором и пользовался, вот только у меня файл, который я не трогал обновился сам по себе, и его нужно было внести в коммит. ТЫ долбоёб?
>>836756
#452 #836742
>>836740
Спасибо
#453 #836756
>>836741
Почитай, что такое gradle wrapper, долбоёб. Файл у него сам по себе обновился.
>>836758
#454 #836758
>>836756
спасибо, спесивый долбоёб
#455 #836760

> 2016


> использовать git

>>836804
#456 #836804
>>836760
Любитель меркуриала или VCS-нинужнопетух?
#457 #836809
>>836740

>> gradle.properties


>Можешь оставить, можешь убрать


Там же параметры для скрипта сборки и ключики для релизов, точно не в гит.
>>836948
#458 #836948
>>836809

> ключики для релизов


Их там нет. Если у тебя есть, то ты сам их туда добавил. Следовательно, сам долбоёб.
>>836955>>837087
#459 #836955
>>836948
Ну прям вечер срыва покровов - везде одни долбоёбы, оказывается
#460 #836965
>>836725
С ndk не заработает. Говно.
>>836971
#461 #836971
>>836965
Кому твой NDK нахуй сдался?
>>836977>>836978
#462 #836976
Сильный ли Java отличается от ActionScript 3?
#463 #836977
>>836971
Любому андроид-разработчику, претендующему на снятие ярлыка «днище».
#464 #836978
>>836971
Когда H.264 или opus на киткате и ниже понадобятся, вспомнишь про NDK.
на самом деле никому кроме телеграма нахрен скорее всего не сдался opus-кодек
>>836979
#465 #836979
>>836978

> на киткате и ниже


Никогда не понадобится. Я что, ёбнутый поддерживать киткат и ниже?
>>837127
#466 #837084
>>829054 (OP)
Парни, у меня жопа горит, потушите плез.
Это говно не видит мой девайс. Скачаны всевозможные апишки, дебаг мод он, куда только не втыкал. перезапускал, 100500 драйверов скачал, а пидорас все равно не видит.
Через панель управления если заходить, то пишет 'нет данных'-это типа комп сам не особо видит девайс?
И как его заставить видеть тогда, я уже заебался, чес слово. Каждый раз вставляешь, тыкаешь, оповещение об 'установке драйверов для устройства' иии все.

Телефон хуавей4с, не гугл нексус.
>>837090
#467 #837087
>>836948
А куда ты их записываешь, в переменные среды, или прямо в билд скрипте оставляешь, лолка?
>>837151
#468 #837090
>>837084
Соси китайское говно.
Ты на телефоне то все включил? Он сам блочить подключение может. Сначала добейся что бы его комп видел, а потом приходи жаловаться на adb.
>>837095
#469 #837095
>>837090
Да, все. И тыкал переключение между фотками и папками(ptp mtp).
Комп его вроде видит, постоянно файлы перекачиваю.
>>837100
#470 #837100
>>837095
Ну тогда попробуй adb devices
#471 #837104
Парни, минимальные навыки в программировании, последний раз что-то делал на паскале. Хочу научиться программировать на java , и срубать потом бабла с кейсов.

1) Кто с чего начинал, можно ли самому освоить java и научиться писать проги под андроид ?
2) Сколько времени это у вас заняло ?
3) С чего начать мне, какие сайты , книги очень доступно и что самое главное оптимально (без хуйни) научат меня программировать ?
#472 #837107
>>837104
1)Нет, тебе не обойтись без документации.
2)пару недель, и то, потому что я много сериалов смотрел
3)шапку, значит, читать мы не умеем
>>837112>>837172
#473 #837112
>>837107

>Нет, тебе не обойтись без документации.


Что за документация ?

>шапку, значит, читать мы не умеем


Читал, там-то про делфи а не про паскаль написано )
>>837128
#474 #837126
>>837104
Очередной вкатывальщик. Пройдите пожалуйста в js/php тред, они специально для вас
#475 #837127
>>836979
minSdk 21 ставишь? Хуя ты везунчик.
#476 #837128
>>837112
Слишком толсто
#477 #837131
Может кто привести пример кода, в котором просто показывается использование субкомпонентов в dagger2 ? Не совсем уверен что правильно понимаю, где они должны инициализироваться
>>837154
#478 #837151
>>837087
Что-то в local.properties, что-то в ~/.gradle/.gradle.properties, что-то в отдельных файлах.
#479 #837154
>>837131
Субкомпоненты не нужны. Используй кастомные scopes.
>>837257
#480 #837155
>>836634
Как?
>>837193
#481 #837156
Ребят, что сначала нужно для успеха:
Научиться программировать на Java или Придумать приложение, которое ты собираешься сделать для андройд чтобы срубать с него бабла ?
>>837169>>837247
#482 #837169
>>837156

>срубать с него бабла ?


Ты не соберешь бабла с одного приложения.
>>837171
#483 #837171
>>837169
Почему ? А как же реклама и все такое
>>837174
#484 #837172
>>837107
И что ты смог после этих 2 недель и какой до этого был бэкгроунд?
>>837176
#485 #837174
>>837171

>реклама


Пшик, деньги делают те, у кого полная экосистема - мобтльные приложухи, серваки, вебприложения, те у кого есть сервис, и контент.
>>837182
#486 #837176
>>837172
бэкграунд

fixed
#487 #837178
>>837104
заебс я значит этому в политехе 4 года учиться должен, а тут тип за месяцок освоить без хуйни хочет, ну ты смешной)
>>837315
#488 #837182
>>837174

>мобтльные приложухи, серваки, вебприложения, те у кого есть сервис, и контент.


Т.е. надо все это иметь вместе чтоб бабло рубить ?
>>837189
#489 #837189
>>837182
Надо мозги иметь и не задавать тупых вопросов.
#490 #837193
>>837155
Не слишком ли много вопросов?
3 Кб, 294x19
#491 #837207
Котлинобоги, как правильно написать лямбду, чтобы из неё вернуть значение? Пикрилейтед.
>>837210>>837251
#492 #837210
>>837207
{ true }
>>837223>>837251
7 Кб, 258x112
5 Кб, 147x107
3 Кб, 269x18
#493 #837223
>>837210
Не работает. Return тоже. Единственное, что заработало - последний пик, но это пиздец.
>>837228
#494 #837228
>>837223
Значит true без return работает только в многострочных лямбдах, когда он идет последней строкой.
>>837232
4 Кб, 233x112
#495 #837232
>>837228
Бля, там просто надо было без скобок. После шарпа думал, что без скобок только одну строку можно.
#496 #837247
>>837156
Попробуй начать с изучения Kotlin https://kotlinlang.org/

На нем любое приложение приносит на 78% больше денег,
даже на РБК писали http://www.rbc.ru/politics/07/09/2016/kotlin-prinosit-ogromniy-dohod.html

мимо живу на доход с одного приложения
>>837255
#497 #837251
>>837207
onTouch { view, motionEvent -> true }

>>837210
Параметры нельзя опускать если их больше одного
#498 #837255
>>837247
Круто, опиши свою историю успеха
#499 #837257
>>837154
вопрос не в этом, я понимаю что разницы не то чтобы много будет. Скажем у меня есть AppComponent, View1Component и Presenter1Component. Скажем нужно добавить еще слой, с дочками View1Component и Presenter1Component. В таком случае где должны инициализироваться компоненты и как их оттуда вытягивать, чтобы инициализировать дочерние ?
21 Кб, 822x313
#500 #837261
Двач, помоги пожалуйста. Пытаюсь разобраться с этим SQLite. Сделал по этому гайду http://developer.alexanderklimov.ru/android/database.php . Мне надо просто вывести данные в TextView, но просто не понимаю как. Перелазил весь гугл, каждый гайд ебаный ListView, а простого примера с выводом в TextView нет.
Подскажите почему не получается вывести?

И есть ли у кого-нибудь сурскод подобного?
#501 #837264
>>837261
Это все все равно тебе не понадобится, так что забей
#502 #837266
>>837261

>Двач, помоги пожалуйста. Пытаюсь разобраться с >Обращение к статической ридонли переменной через объект


>квери в главном потоке


Пизда тебе. Попробуй cursor.moveToFirst. Поставь вместо заполнения логирование этих самых штук, у меня ощущение что у тебя в while не заходит, возможно результат пустой. Посмотри cursor.getCount
>>837268
#503 #837268
>>837266
Хуль ты доебался, он даже просто прочесть из бд не может, а ты про главный поток.
>>837276
#504 #837270
Аноны, а как правильно учиться? Прохожу гайды разные, читаю документацию, но ощущение будто не знаю совсем нихуя. Думал может попробовать запилить свою простую прикладную апку, но идей нету. Собственно, что можно написать в качестве той-проекта?
#505 #837276
>>837268
Я злой прост, сроки горят. Ну я ему намекну что в вайл нихуя не заходит.
#506 #837278
>>837270
придумал программу, называется программа для общительных (это даже не название, просто суть), но идеи не расскажу. Ну а ты сделай копилку для порно, к примеру, у тебя есть корзина, в которую добавляется один порно ролик в неделю, и ты можешь его посмотреть соответственно если он есть в корзине.Как карта на которую деньги приходят, как приходят, ты можешь потратить, так и тут как пришло, можешь подрочить. Это для тех кто хочет себя ограничить в этом ) Но я не программист если че, просто пока планирую вкатиться.
#507 #837279
>>837270
Изи:
Трекер расходов. (усложнение: синхронизация между устройствами)
Очередное приложение о погоде.
Средне:
Музыкальный плеер. (усложнение: с музыкой из ВК)
#508 #837315
>>837178
>>837270
Клиент для двача пиши. Все профессионалы с этого начинали.
>>837317>>837322
#509 #837317
>>837315
И заканчивали.
>>837436
#510 #837322
>>837315
Что такое клиент ?
>>837331>>840700
#512 #837335
>>837331
Т.е. мы пишем соощения тут, они тут же отправляются на сервер, а чтобы посмотреть сообщения программа выгружает их с сервера на экран, так примерно ?
>>837343
#513 #837343
>>837335
Примерно, программа по сути показывает данные с сервера, проводит над ними некоторую обработку, может изменять данные на сервере, добавлять новые.
#514 #837432
>>837261

> null столбиком


Жги дальше.
#515 #837436
>>837317
проиграл
#516 #837667
заюзал
minifyEnabled true
useProguard false
и что бы вы думали? апп падает
>>837677
#517 #837677
>>837667
Ну ты определись используешь ты прогврад или нет, да?
>>837908
#518 #837751
Аноны, поясните за такой момент. Могут андроид девелопера курнуть с проекта, допустим, когда будет полностью написано приложение?
>>837841>>837909
#519 #837841
>>837751
Могут.
#520 #837908
>>837677
лошара, стрипать код можно без прогарда
>>837927
#521 #837909
>>837751
ага, кидают разработчика который написал норм апп, и нанимают на поддержку индуса за 2$/h
>>837948
#522 #837927
>>837908
Чет не видал такого, как ты без правил прогварда будешь код обфусцировать?
#523 #837928
http://hannesdorfmann.com/android/adapter-delegates
Мне очень понравилась лирическая часть, особенно про рекламку, какие же имеющиеся решения говно.
>>838490
#524 #837948
>>837909
Поэтому надо на писать на Котлин, где ты индуса на замену найдешь?
>>837949>>838337
#525 #837949
>>837948
В /pr/ в треде борщехлебов.
#526 #838320
Аноны, делаю очень специфическое приложение. Мне нужно заводить будильники на разное время, иногда первый будильник должен сработать через 3 секунды, как я запускаю, и после него опять будильник через 3 секунды. В таком случае первый будильник приходит с опозданием на некоторых телефонах, а на некоторых все ок. Я так думаю все зависит от конкретной прошивки. Юзаю setExact с api 19. Можно ли как то это пофиксить и добиться одинакового поведения везде? Может стоит юзать не AlramManager, а что-то другое?
#527 #838337
>>837948
Тогда уж на Haskell
#528 #838490
>>837928
Запилите перевод, пожалуйста.
#530 #840700
>>837322
тот кто платит твоей маме
Тред утонул или удален.
Это копия, сохраненная 29 сентября 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски