Учитывая, что яблоко ненужно разработка под яблоко и андроид нихуя не одно и то же, решил таки создать отдельный тред. Коротко о главном: 1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - то добро пожаловать в андроид разработку. 2) Android Studio & Java - единственный легитимный набор. 3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах. 4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js.
Где брать инфу: Интернет-ресурсы 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. Хотя чего тут объяснять.
Книги их никто не читает но все советуют только одну 1) The Busy Coder’s Guide to Android Development
Отдадим дань старому треду: >Делимся своими графиками заработка, палим годные способы привлечения большей публики и выхода в топ100, бугуртим, быдлокодим, учимся, делаем первые шаги, лайкаем и оставляем приложениям отзывы за бесплатно. Пред. тонет тут: https://2ch.hk/pr/res/434414.html
Полгода назад начал пытаться в андроид. Тогда посоветовали использовать эклипс, мол студио все еще сырая. Тогда не смог осилить курс из-за недостатка времени. Сейчас подписался на другой курс, там советуют использовать студию. Какая разница то между этими ide? Какая будет леге для новичка. Я для учебы явы использую эклипс, со студией никогда не работал.
>>457939 Ок, спасибо. Я кроме эклипса ничего больше не использовал. Но для моего уровня он вполне ок. Я все-равно только процентов 20 от функционала использую.
>>457983 Ок, скачаю на днях посмотрю. Я вообще к чему про студию вспомнил, потому что на курсах, что я сейчас начал смотреть они по-ходу используют студию. Если кому из анонов интересно вот эти курсы: http://learndroid.e-legion.ru/
Это в ветке по яве анон посоветовал. Посмотрим как дальше дело пойдет. Они только на этой неделе начали.
>>458114 Там конечно магии никакой нет. За 10 уроков из среднего анона бога андроида не сделают, но просто как вводной курс вполне норм. Алсо, они я так понимаю фактически повтор информации делают, которая тут выложена http://developer.android.com/training/index.html
Я пробовал проходить курс на курсере, но ниасилил из-за английского языка, тут на русском будут рассказывать, надеюсь понимая больше будет.
>>458114 Когда увидел лектора, то проиграл. Есть еще платный курс на udacity, но он advanced уровня, зато от людей из гугла, которые интересно рассказывают. В бесплатной версии сертификат не дадут.
Аноны, я сейчас меж двух стульев - тырпрайз и ведро. В андроид берут, в тырпрайзе мозги ебут. Если вдруг случится что-то такое, что андроид в будущем ВСЁ (ну примерно как виндовс мобайл), сильно ли пригодятся джава-скиллы, приобретенные в андроиде, для переката в тырпрайз?
>>458241 На любом другом мобильном устройстве - пригодятся, а в тырпрайзе - вряд ли. Тырпрайз огораживается от всех нас, чем дальше, тем больше. И правильно делает.
>>458241 Я пробовал тырпрайз - скука беспросветная, очень на любителя, хоть и денежно. >андроид в будущем ВСЁ Скорее тырпрайз автоматизируется, и станет уделом макак за еду. А с политикой аппл, гейфон в РФ ещё долго будет оверпрайс для большинства. Хочешь не пролететь - учи несколько платформ.
>>458231 За сколько сам пройдешь - столько и длится. Хочешь сертификат - плати деньги и делай только финальный проект. И да, если на Java хотябы несколько месяцев опыта нет, нихуя ты не напишешь.
>>458241 Разработка под Android достаточно сложна, ты приобретешь хорошие навыки в параллельном программировании и в проектировании архитектуры. Ты будешь ценным спецом. > В андроид берут Каков твой уровень знаний? Как прошел? Пили подробности (есть сертификаты? приложения в маркете?)
Итак, джава макака вкатывается в тред. Тоже начинаю учить андроид. В данный момент работаю джуном джава кодером на тырпрайзе. Не знаю, что тут все пиздят про скуку - для джуниора очень интересно. Каждый день узнаётся куча новых штук.
>>459282 Да нет, просто когда ты пишешь любое приложение, не только под ведроид - ты планируешь его архитектуру. Или ты имел ввиду сравнение с тырпрайзом на производстве, мол там ты - винтик, а ведроидное приложение чаще пишут 1-3 человека? Тогда - да, проектирования в ведре больше.
>>459318 Не знаю, что там за охуенные знания джуна в тырпрайзе. "А вот эту зависмость можно внедрить так", "А вот тут можно не писать ссаный запрос к бд руками, а сделать это с помощью фреймворка X", "Для этой хуйни есть такой охуенный фреймворк"? На любителя.
>>459318 >джуном джава кодером на тырпрайзе Пили стори как устроился. Что вообще нужно знать джуниору и за сколько им можно стать? Сам я в свободное время пилю приложения под андроид, не бесплатно, но джаву знаю плохо, код мой ужасен. Почитал немного Философию джава и теперь вообще пиздец в унынии
>>459333 >за сколько им можно стать? У меня в универе началась джава в октябре прошлого года. Хоть как-то учить я её начал с февраля. До лета учил-учил-учил, потом нашёл у себя в городе контору, пошёл на стажировку, собеседование, и вот я уже джун. Сам читал библиотеку профессионала и клепал лабы в универе. Лекции и лабы дали очень много, после всего этого книга читалась очень быстро, очень много схватывалось.
Что нужно знать... как обычно: кор(ООП, многопоточность, equals/hashCode), по томкату могут спросить что-нибудь из его конфигурации, спринг, хибернейт, сервлет-апи, работа с json/xml (у меня был один из вопросов на сбс: преобразование элементов из json в xml), различные SQL команды (джоины, хранимые процедуры и т.п.). Могут попросить и код написать: советую прочитать книгу "Паттерны проектирования". Довольно таки годная, поможет твоему говнокоду реже проявляться. Ещё друг советовал "Совершенный код" прочитать, но руки никак не доходят.
>>459349 Теперь - знаешь, тогда - очень сомневаюсь.
Сейчас работаю на стартапе ведроидразрабом, пока интересно/сложно, ведь я пилю все в одно рыло. Знакомая пошла в нормальную контору, сидит пилит по диалогфрагменту и по пару фич в день. Нахуй так жить?
Кстати, такой вопрос. Допустим мне нужно запустить два асинктаска друг после друга(два запроса к серверу друг за дружкой), при этом всем асинктаски исполняют функционал который требует контекст. В один асинктаск запихивать не хочу так как эти таски юзаются еще и отдельно.
Сколько вам лет-то? В 26 уже я старенький для освоения профессии, да? Лет пять назад забросил кодинг, ну а теперь санкции-хуянкции и хоть снова кодь иди.
>>459356 Ты спросил что нужно знать, я написал что могут спросить. Что из этого учить выбирать тебе.
Что за стартап? Надеюсь не очередной чатик? Чего сам не пойдёшь? В конторе можно неплохо подняться как по скилу, так и по деньгам. А потом уже, когда будет и то и то, попробовать замутить стартап.
И в чём заключается вопрос? Сервер игнорит второй запрос, или что?
>>459361 >спринг, хибернейт, Spring in action книга и переведённые на русский доки хибернейта. Легко гуглятся.
>сервлет-апи Лабы, гугл и много практики. >tomcat conf Случайно наткнулся на доковский файл в гугле, где подробно были расписаны все конфигурационные файлы томката.
Какой язык, фреймворки выбрать для сервера iOS/Android приложения? Скорее всего, RESTful. Думал над Node.js, но на чём еще обычно пишут? Хочется попробовать и что-нибудь другое.
>>459366 >Ты спросил что нужно знать Я другой анон. >Что за стартап? Надеюсь не очередной чатик? Нет, не чатик слава богу. >Чего сам не пойдёшь? В конторе можно неплохо подняться как по скилу, так и по деньгам. А потом уже, когда будет и то и то, попробовать замутить стартап. Опыта нихуя, как раз планирую подучиться немного на практике. А потом уже с проектом в плеймаркете и роботу найти легко.
>И в чём заключается вопрос? Сервер игнорит второй запрос, или что? Ловит ожидаемый дедлок и оба треда засыпают.
>>459364 В каждом по запросу к серверу, второй должен запускаться после успешного выполнения первого. Еще заполняют базу, потому нужен контекст.
>>459372>>459375>>459381 Собственно, как раз хотел Джаву попробовать. Там столько всяких вкусностей, которых я вообще не знаю, свифты всякие, ухх, как представлю, что наоткрываю статей интересных во вкладках и начну поглощать этот единый организм...
А насчет хостинга - у Амазона вроде бы есть хорошие решения, или нет?
>>459391 Я и пытаюсь так сделать, но как это сделать на практике, в этом и вопрос. >>459390 Как раз проблема в том, что нужно запускать таск сразу после выполнения первого, я хз как это сделать, обычный подход запускать что-то в постэкзекьюте накрылся медным тазом, так как второй поток тоже работает с контекстом.
>>459397 > Как раз проблема в том, что нужно запускать таск сразу после выполнения первого, я хз как это сделать, обычный подход запускать что-то в постэкзекьюте накрылся медным тазом, так как второй поток тоже работает с контекстом. Только что написал код, который запускает один асинктаск после окончания другого и, кажется, все работает как надо. Вкратце, создал конструктор таска, который принимает контекст, в бэкграунде усыпил тред на пару сек, в пост экзекьют сделал тост, который берет контекст из таска и затем отправил коллбек в активити о том что первый таск завершился. Из коллбека вызвал экзекьют второго таска и все прошло без проблем. По поводу коллбеков прочитай тут: http://stackoverflow.com/questions/9963691/android-asynctask-sending-callbacks-to-ui. Там всего-то надо написать и заимплементить интерфейс в пару строчек. мимо-крокодил
>>459445 > с помощью листенера метод выполняется все же в асинк таске Какой метод? Я чет не понимаю трудности твоей проблемы. Мы из активити или фрагмента создаем асинктаск [code]FirstAsyncTask firstAsyncTask = new FirstAsyncTask(this, this);[/code]Первый this — это контекст, второй — листенер. Когда таск заканчивает свою работу, у него из пост экзекьют посылается коллбек в нашу Активити. Затем из этого метода onTaskComplete() мы создаем второй таск, и передаем ему контекст (или по желанию передаем его из предыдущего таска). На каком этапе у тебя ошибки?
>>459490 а ты специально хочешь писать костыли используя костыль вместо того что бы воспользоваться библиотеками как раз написанными для построения качественного и надёжного network transport слоя?
>>459692 ох ... какое же дно это тхред. если тут сразу начали советовать как правильно подкостылить костыль что бы работал ок вместо того что бы проблему решить начнёмс. если ты адекватный человек, то: retrofit + okhttp volley + okhttp AndroidAsync (не пробовал но вроде автор ок)
если ты дегенерат, то: androidannotations loopj robospice asynctask java thread + runnable etc
Перекатился месяц назад с яблок на андроид, в принципе с помощью документации и стэковерфольфа разобрался как запилить многие фичи для моего проектика, но возникли некоторые вопросы, дело в том что до этого джавой только баловался и назвать себя знатоком не могу. Собственно вопросы:
1) Есть некое activity (египетский стиль режет мне глаза и подпекает мой пердак, уж простите) [code] public class YobaActivity extends ActionBarActivity { // есть собственно объекты, ну допустим даже сенсор мэнэнджер SensorManager mSensorManager;
// а дальше идут всякие методы например public void yobaGetYourMamka() { // в котором мне нужно использовать mSensorManager mSensorManager.unregisterListener(this) // например
// и очень часто у меня в этом месте происходил краш // так как mSensorManager был nil. Поэтому данную // проблему решал через костыль, а именно сохранял // нужный инстанс в синглтоне и оттуда доставал в // нужных местах. Собственно, как можно решить // данную проблему по нормальному? } } [/code]
2) Где можно посмотреть пример хорошей архитектуры какого-нибудь android проекта? Скажем так, хочется иметь какую-то точку опоры, чтобы для начала на нее ровняться.
>>459848 О каком контексте речь ? О бъекте типа Context ? Ты хочешь запускать один AsyncTask,по завершению другого, когда изначальное Activity/Fragment уже не в поле зрения ?
>>459866 >О бъекте типа Context ? Да. >Ты хочешь запускать один AsyncTask,по завершению другого, когда изначальное Activity/Fragment уже не в поле зрения ? Когда запускаш асинктаск они уже как-бы не в поле зрения, потому контекст и нужно передавать. Первый запрос сохраняет инфу в бд, второй сразу после этого ее вытягивает, не спрашивай почему это утрированый пример. Я так понимаю что обычным асинктаском тут не обойтись.
>>459873 Если ты хочешь выполнять запросы в фоне, не зависимо от того, какое Activity/Fragment сейчас отображается, тебе нужен Service. Ты можешь в своей ситуации либо биндиться к нему, либо просто запустить его в отдельном потоке и получать от него данные/выполнять в нем работу как-то по-своему. AsyncTask ты используешь не по назначению. Он нужен в ситуациях, вроде "юзер нажал кнопку, покрутился прогресс бар, отобразился результат".
>>459886 Угу. Тогда очередь не нужна, нужно хранить только 1 элемент (текст запроса). Если я использую timerTask, который будет сам себя перезапускать и проверять, изменился ли текст запроса это нормальное решение? Что-то синхронизировать надо будет?
>>459878 В каком плане хуйня? Я объявляю инстанс класса, в моем случае SensorManager, инициализирую его, а потом в например в каком-нибудь listener или методе мне нужно либо получить его значение, либо выполнить некую функцию, а он внезапно nil, хоть и глобальный. Такая же хуйня возникала и с интерфейсными объектами, например в начале создаю кнопку:
в проекте есть момент, когда у меня вылазит AlertDialog в котором по нажатию на клавишу мой yobaButton должен стать enabled. Хуяк, краш, смотрю, пишет что мой yobaButton нулевой, сосните хуйца. Первая мысль была такая, что возможно сборщик мусора подчищает те инстансы, которые по его мнению не используются, у меня подобное было в яблоках. ЧЯДНТ?
>>459901 В том то и дело, что в xml-ке он есть, это первое что я проверил, совпадает ли айдишник.
>>459902 1) Ок, надо будет перечитать за модификаторы полей. 2) Учитываю, правда я его еще не до конца вкурил, например я думал что OnCreate вызывается всего один раз при создании активити. В моем случае я в OnCreate инициализировал объекты.
Скорее-всего, ты вызываешь findViewById до вызова метода SetContentView. При этом у тебя получается, что xml активити не распарсен, и иерархия вьюшек не создана. Следовательно, кнопку просто негде искать по id
Образовался стек вопросов: 1) Для запросов к серверу юзаются асинктаски, для подгрузки инфы с локальной бд - лоадеры. Я правильно понял? 2) Есть ли смысл вообще юзать контент провайдер если своей бд буду пользоватся только я(мое приложение)? 3) Если нужно вытаскивать из локальной бд список объектов с списками, единственный вариант запускать вытягивание курсорами? Орм пока что не хочу юзать. 4) Есть ли инсерт для списков, или нужно опять фором крутить и вставлять по одному?
>>460069 Нет мне нужен обязательно open street map, проблем с этим не было. Проблема в другом, в АndroidManifest поставил adjustResize, но когда всплывает экранная клавиатура карта не все равно не перерисовывается, поведение остается таким же если бы было adjustPan. Не знаю что делать с этим.
>>460144 напрямую связана. выполняешь один запрос. когда получаешь результат - запускаешь другой. нахуя асинктаски и чем они тут могут помоч - не понимаю. когда тут за треды тереть начали - это вообще лольный лол. вы бы блядь сначала разобрались как асинктаски работают. стадо баранов.
>>459884 Добавлять запросы в очередь. Разгружать очередь n раз в секунду. Создаёшь ранэйбл в который передаёшь свою очередь. желательно блокирующую. Достаёшь из очереди запрос и выполняешь его. Делаешь задержку на 1/n секунды. и всё это в цикле. Когда запросы зкаончаться и очередь блокирующая опустеет - она будет держать твой тред в ожидающем состоянии. как только ты в неё что то добавишь - всё начнётся сначала. Ранэйбл запускаешь в тхреде.
>>460018 ContentProvider нужен для того что бы шарить данные. Локально он тебе не нужен за исключением нескольких ситуаций.
>>460045 1. неправильно. для запросов к серверу использую либы. 2. нету. 3. А как блядь еще? 4. почитай про транзакции есть еще булк инсерт но именно его тебе и надо заимплементить через транзакию.
>>460265 >1. неправильно. для запросов к серверу использую либы. Тогда попробую volley + okhttp >2. нету Как раз нашел SQLiteCursorLoader.java. >3. А как блядь еще? Ну хуй знает, эти форы с курсорами, в форах с курсорами показались слишком ебанутыми. >4. почитай про транзакции Почитаю спасибо. >есть еще булк инсерт Натыкался, но там пример был с этим ебанутым контент провайдером, потому и забил.
Пиздец просто, чувствуешь себя обезьяной в магазине техники.
>>460320 Суть проблемы не объяснена нормально. Ответ дан. Суть ответа не понята. Смеюсь с ваших потуг написать хоть как то работающее приложение. Если такие вопросы тут задают то страшно представить что у вас там в коде твориться.
Retrofit - заебись просто библиотека, даже пример с оффсайта не работает. Годно сделали.
>java.lang.IllegalStateException: Could not execute method of the activity Выпрыгивает при обращении к методу интерфейса. Все делал как по гайду. Гугл решений не обнаружил.
Блин, не работает как надо. Ввожу в поисковое поле "pain", а последний поисковой запрос "pa" Код здесь: https://gist.github.com/anonymous/c10f4751c1e08de65555 Получается, что между lifo.getLast и lifo.clear вызывается lifo.push в итоге весь мой поисковой запрос "pain" стирается. Но почему, ведь там синхронизд проставлен?
>>460265 Вопрос был именно про асинктаски. То, что говно уже написано - не означает, что его использовать выгодно. Если проект простой - можно и руками запилить, если большой - руками пилить просто необходимо. У меня в первом проекте данные вообще сохранялись тупо в файлик, а изменения в них фиксировались сервисом и активити с помощью велосипеда из интентов и ресиверов.
>>460449 Для опыта точно ничего особо не проебёшь. Да и в производительности врядли. Проблемы обычно бывают у хуесосов типа >>459756, которые видимо вылезли из тырпрайза, и на каждый чих суют решение из готовой либы
>>460386 >>460401 просто ты еблан и твоего левела даже не хватает для того что бы подключить её, настроить и воспользоваться. асинктаски как раз для андройд программистов уровня тебя.
>>460442 потому что твои проекты уровня laba3.java и их создатель соответствующего уровня программист. соответственно.
>>460449 скажу я. либа говно. используй адекватные.
>>460456 два раза нипопал. энтерпрайзом в жизни не занимался. стронгли мобайл. хуесос ты, судя по тому какие у тебя подходы к написанию проектов. если ты не знаешь про те либы что я перечислял и не знаешь их авторов - ты скорее всего просто конченый ебанат который находится на уровне "поцаны а как запрос отправить, через он клик листнер или сервис?"и это кстати не может не радовать. ведь несмотря на обилие информации в интернете по разработке под ведро на данный момент, все равно есть часть ебанатов которые пишут проекты как ты. а значит цена на хороших специалистов не упадёт :)
>>460672 >скажу я. либа говно. используй адекватные. Тогда дай еще пару советов. Запросы через retrofit понравились, довольно таки удобно и быстро. Но вот хз что взять для асинхронного выполнения всего остального. Если асинктаски говно. Нужен инструмент для работы с бд, т.е. получить инфу через запрос ретрофита и в коллбеке засунуть его в локальную бд, и потом себе работать с этой бд (выводить всякие подгружаемые листы и прочее). Делал асинктасками, но они говно, хочу переделать. Думал лоадером воспользоватся, но пиздячить контент провайдер когда он вроде как и не нужен не хочу бритва оккама же. А если та либа говно, то я и хз что делать. Алсо, в поле зрения Robospice - который ты же и обосрал, я пока не шибко понимаю в чем его хуевость. RxJava - ретрофит под него вроде как подточен немного. Ну и лоадеры через контент провайдер который я юзать не хочу.
>>460456 Ну тут хуй знает, нужно много инструментов знать.
>>460717 Спасибо, пойду траить. Пилю проект сам, мой первый опыт, но иногда критически не хватает инфы и советов от более опытных. Если бы ты кинул фейкомыло, был бы очень благодарен, вопросов много не задаю, да и те по-большому счету "как сделать правильнее" или посоветовать либу.
>>460717 >RxJava - норм но Bolts оба прекрасно справляются с тем чтобы превратить весь код в асинхронный пиздец, где хуй знает что как выполняется лучше избегать их пока не приспичит
>>460767 Запросы к серверу, которые результат засовывают в бд, ну и работа с данными в бд, добавлять новые, выводить и тд. Обычный сервис-клиент. Как уже посоветовали, планирую делать запросы через ретрофитс и все остальное через болтсы.
>>460773 лул, ну и зачем же, поведай давай всем. что бы не было больше вопросов, ответь сразу на все 4: в каком месте ему нужен сервис? что бы реквесты делать? что бы в базу асинхронно добавлять? ты дебил?
>>460717 Манька - ну ты ведь понимаешь, что твои диваннные потуги несколько отличаются от разработки сурьёзного приложения. И пока дети, наподобие тебя, играют с ретрофитами - суровые дядьки пишут всё руками, если ещё и не на крестах.
>>460771 Ты какой-то Амаяк Акопян. Что ты мутишь вообще ? Отвечаешь загадочно, ничерта не понятно что ты хочешь, какие-то библиотечки прицепил, еще какую-то малафью, в асинк тасках запутался. Для обмена данными по протоколу http есть встроенные средства джавы, если не http, то есть так же встроенные апи для сокетов.
>>460805 ну это уже совсем толсто. вот это у тебя печёт. видать ты действительно ебанашка местная способная только на это.
>>460789 не слушай дебила и я думаю по совместительству того ебаната любителя hand job. делашеь запрос ретрофитом и потом если нужна асинхронность - пользуешь болтс.
>>460837 Хуя там непонятного? Как работает обычное клиентсвкое приложение? Я вытаскиваю инфу хттп запросами с сервера с рабтающими апи, засовываю в свою локальную бд, и оттуда уже с ней работаю.
>>460880 >делашеь запрос ретрофитом и потом если нужна асинхронность - пользуешь болтс. Так и сделаю, спасибо.
>>460941 Ну и еще нужно модель-класс создавать с полями как у таблиц, а так как я юзаю этот же класс для gson парсера то в итоге мне нужно свою бд делать с полями которые возвращают мне в запросе.
>>460944 непонял. ты же можешь для Gson использовать аннотацию @SerializedName также можно прописать аннтоциями названия полей в таблице для cupboard. а сами переменные можешь назвать как хочешь.
>>460945 а кто сказал что нужна синхронизация локальной бд с серверной?
>>461007 >непонял. ты же можешь для Gson использовать аннотацию @SerializedName >также можно прописать аннтоциями названия полей в таблице для cupboard. а сами переменные можешь назвать как хочешь. Спасибо, не знал. А булк инсерт можно как-то сделать? Через капбоард само собой.
>>461019 я тебе советую использовать только SerializedName. А поля в таблице пусть зовуться как и переменные. Потому как если хочешь переименовывать нужно в капборде подрубать поддержку аннтоций (она встроена но на старых друлях как известно анотации процесятся медленно так что нахуй если у тебя мин сдк меньше 14)
по поводу вопроса: cupboard().withDatabase(database).put(List) не факт что там будет использоваться транзакция - смотри исходники если важно. если тебе нужно вставлять тоннами обьекты тогда советую просто использовать капборд для создания ContentValues из обьектов а уже записывать в базу стандартными средствами используя транзакции.
Привет, человеки. Есть у меня приложение с navigation drawer. Есть в меню пункт, по нажатию на который пользователю покажут список категорий в главном фрагменте. При нажатии на категорию надо показать экран с подробной информацией. Так вот, по канонам мне нужно перейти в новую activity (detail activity), но мне этого делать не хочется. Как сделать очевидную навигацию без detail activity?
>>461024 Ебать я прихуеваю с болтсов, штука конечно охуенная, но я так понимаю что они не только для асинхронки созданы? Единственное что не понял, где лучше вызывать onSuccess и onSuccessTask, но не критично. Еще раз спасибо, жалко только не слишком много примеров использования, но изначальный гайд достаточно подробен.
>>461049 Сделай фрагмент с детальной информацией. По клику на элемент делай его экземпляр, подменяй фрагмент с листом и вешай какой-нибудь onBackListener, чтобы вернутся взад.
>>461106 Окей. А вот еще вопрос: Нужно мне фрагмент в контейнере поменять из другого фрагмента. Где собсна .replace(...) вызывать: 1) getActivity().getFragmentManager....replace 2) Сделать коллбек внутри активити и дернуть его из фрагмента? Хуй знает, но кажется первый способ ведет к запутанному коду, а второе кажется странным.
Сколько работаю с ведроидом, не перестает покидать ощущение, что его писала наемная индусня: кучи говнокода, навязываемые для того, чтобы сделать элементарные вещи, бредовые асинктаски, бредовые фрагменты https://corner.squareup.com/2014/10/advocating-against-android-fragments.html и многое другое. Если взглянуть на настоящие гугелевые либы для жавы, типа гуавы, контраст очевиден. К счастью сторонние либы это во многом исправляют.
Вопрос по android bolts А как спрятать эту стену текста? Т.е. в асинктасках я просто делал асинктаск в отдельном классе. А тут стартовать можно либо с метода который таск возвращает либо с Task.call(). В результате ебанутая стена текста, может можно где-то подглядеть как с ними работают в реальности?
В Activity загружается options menu элементы ActionBar'a, как мне в фрагменте заменить их на другие? Мне нужно, чтобы searchView было подгружено из Activity, а не из фрагмента, т.к. по клику на searchView подключается фрагмент поиска, при закрытии происходит переход назад / на другой фрагмент.
>>461587 Таки не разобрался но уже ближе. Ругается на поле с листом кастомных обжектов, хотя то под аннотацией @Ignore. Не может конвертировать его, хотя нахуй оно вообще пытается это сделать я не понимаю.
двощ привет, руби-макака на связи. работаю в мухосранске на конторку по меркам города хорошую. тут меня хотят окунуть в чан с говномандройдом. типа переодически проскакивают заказы и их надо кому-то делать. что скажите, стоит обмазаться? с одной стороны и плюсы есть. больше всего напрягает, что и на рельсах пилить надо, да и в андройде ковыряться. чо делать то двощ?
>>461856 Если совсем в падлу и очень простые заказы - то добро пожаловать в Cordova/PhoneGap. Там можно навелосипедить приложение на HTML со вставками быдлокода на JS. Если нужна мощная логика, то придется обмазываться явой.
>>461924 Есть какие-нибудь решения, чтобы сократить количество говнокода для задания view event listeners (к примеру, связывать методы активити c событием view аннотацией)?
>>461975 Во время разработки мне нужна максимальная производительность труда. Листенеры можно вручную переписать потом. По-хорошему, надо бы и вовсе писать прототипы на высокоуровневом языке, а не на жаве, но подноценнного сдк для чего-то иного нет. В таких условиях меня интересуют либы, которые убыстряют реализацию фич и которые можно вычистить, когда аппликуха в окончательном варианте пойдет в продакшон.
>>461979 Кто тебе мешает делать абстракции на Яве? Фрагменты и активити тоже можно нехуйово абстрагировать. У меня сейчас проект по большей части на абстрактной хуйне и написан - чтобы запилить нечто новое нужно всего лишь сделать реализацию с двумя-тремя методами.
>>461979 Пиши на Scala. Там вроде есть проблемы с количеством методов в артефакте, но они решаются соответствующими тулзами. Мимо-не-андроид-разработчик
>>461975 аннотации работают норм начиная с api level 14
>>461979 >мне нужно что бы было все быстро, что бы генерировать тонну говнокода в секунду. ведь весь мой говнокод можно потом переписать. по хорошему мне нужна вундерфавля которая будет генерировать 100тонн говнокода в секунду а то я на джаве могу только тонну в секунду, но полноценного сдк нет. в таких условиях меня интересуют либы который ускоряют мою скорость говнокодинга. сначало буду хуяк хуяк, а как до продакшона дойдет я возьму и все поменяю что бы было заебись. похуй что потом все наебнется. и придется рвать пердак что бы все попроавить.
сука, тыдебиииил. сразу видно гондона который учился программировать на фрилансе каком-то. я сначала ответил на твой вопрос про либу, но потом как увидел какой ты дебил решил его не включать в пост. ебись со своими Androidannotations сука тупая.
>>461990 ему для начала на java нужно научится писать. потом под ведро. потом учиться промышленной разработке.
Как мне сделать чтобы 2 navigation drawer были 2 Listview, один над другим и все это внутри scrollview? Т.е. листы без скролла. Может кто уже делал? Алсо, постиг дзен выноса навигации в отдельный фрагмент. Это оказалось удобно.
Блин, народ, как закрыть приложение и убрать из стека? Поставил в активити такой бродкаст ресивер: private BroadcastReceiver killAppReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { MainActivity.this.finish(); moveTaskToBack(true); } }; Из сервиса шлю интент для закрытия, а получаю - ИГРУ ТИПА ФЛАППИ БЕРД. Android 5.1.
>>462104 Android сам управляет жизненным циклом приложения и ты не можешь его просто взять и "закрыть, выгрузив из стека". Юзер жмет домик когда хочет выйти, юзер сам может убить твоё приложение из списка недавно запущенных. Все остальное это хаки и будет работать НЕСТАБИЛЬНО на разных девайсах/версия андроида
Мне нужно уничтожить активити, а потом перейти в следующее. Допустим: Меню -> Пред настройки ->Игра -> Итоги. Вот что бы после того, как переходил из активити "игра" в активити "итоги", кнопкой назад я не смог бы вернуться в активти "игру".
У меня сразу несколько вопросов в знающим ананасам, а именно:
У меня есть: - pagerView который гоняет бесконечно много фрагментов. - фрагмент футер с кнопкой.
1) Можно ли передать данные из текущего фрагмента PagerView в фрагмент кнопки?
2) Данные в приложение приходят с сервера, занимается получением первый фрагмент pageView, далее данные записывает в синглтон класс. Стоит ли перенести получение данных в активити?
3) Где, в моём случае, лучше разместить shareButton - в фрагменте или активити?
Захарченко Александр Рептилоидович12/04/15 Вск 11:19:32#215№462759
И еще, у кого есть новые редакции книги "The Busy Coder’s Guide to Android Development" скиньте на фейкомыльцо [email protected] , а то в моём Донецке 45$ это 2 месяца работать
>>462734 1)Да можно. Активити-хост реализует интерфейс MyActivityHost, в котором ты напишешь метод sendToButton(Object...args). Из хостящегося фрагмента вызываешь ((MyActivityHost)getParent()).sendToButton(one, two), предварительно проверив, что getParent() instanceof MyActivityHost
3) В Activity, т.к.она есть у всех хостящихся фрагментов
>>462734 1)Да можно. Активити-хост реализует интерфейс MyActivityHost, в котором ты напишешь метод sendToButton(Object...args). Из хостящегося фрагмента вызываешь ((MyActivityHost)getParent()).sendToButton(one, two), предварительно проверив, что getParent() instanceof MyActivityHost
3) В Activity, т.к.она есть у всех хостящихся фрагментов
Где искать заказы Android фрилансеру, раньше юзал "фрилансим", но они ввели плату за использование сайта и на этом все закончилось. Стал писать свой софт, первое время все было ок, но сейчас все скатилось в говно, идеи кончились. Где вы ищите заказы?
Где можно почекать зарплаты мобайл девелоперов? Мне тут сорока на хвосте принесла что я умру нищим, в то время как тырпрайз господа будут жрать икру с задниц шлюх. Зарплаты джуна вообще везде очень похожи, а как дела дальше обстоят с более православными направлениями в тот же веб или бекенд?
>>463072 На hh.ru, очевидно. Хз - сколько не смотрю ведроид (ДС-2) везде нужен сениор, и зп предлагают тырпрайзную 80-120. На гей-оси вроде народ и побольше зарабатывает. Но главный плюс гейоси - намного меньшее количество разрабов, и легче вкатиться без опыта. Пару лет назад слышал охуительные истории о том, что на гейось брали вообще без всяких навыков прогания на obj-c - достаточно было знать на начальном уровне несколько других языков, и уметь писать джуновские проги.
>>463291 Это оказалось несложно. Сначала просто вызывал hide() и show() у ActionBar, но из-за этого разметку колбасило. По-этому я добавил в styles.xml: <item name="windowActionBarOverlay">true</item> Теперь ActionBar перекрывает содержимое Activity и казалось бы, что всё хорошо, но нет. Теперь SwipeRefreshLayout прячется под ActionBar. Чоорт. Как это пофиксить?
>>463300 Решение простое: int actionBarHeight = activity.getSupportActionBar().getHeight(); refreshLayout.setProgressViewOffset(false, actionBarHeight, actionBarHeight*2);
Активити в котором список подкастов, которые находятся на сервере. По клику на элемент списка, переходит на другой активити где этот подкаст воспроизводится в бекграунде (Т.е. приложение свернули, подкаст всё равно работает)
На данный момент сделал через медиаплеер, который висит в фоне и выключается onDestroy активити. Но я подозреваю что такой метод хуевый, ведь андроид может просто убить приложение? Стоит ли копать в сторону Service? Как я понял, их приоритет жизни выше?
>>463416 Именно через сервис и делай. Делаешь startForeground() в oncreate сервиса, ставишь обязательное notification с кнопками громкости и включением/выключением подкаста + кнопка убить приложение и сервис. С сервисом из активити общайся через ServiceConnection - сможешь вызывать методы сервиса прямо напрямую, это удобно. Кнопки и custom layout в notifications доступны только с Android 4.1!
Аноны, скажите, есть ли возможности устроиться в ведроид-разработку 30лвл-куну? Или все уже потеряно для старикана и проще сразу в окно выйти? Когда-то учил кодинг, сейчас уже нихуя не помню, но вспоминаю. В частности яву задрачиваю, может через полгодика чего получаться начнет,лол.
>>463652 То что картавит - похуй. Хоть вообще пускай все буквы алфавита проебывает. Главное чтобы полезные сведения давал и понятно для чайника. Остальное похуй.
Добрый день, нужен совет, может немного не к месту, но все же. Ситуация такая: живу в мухосранске, закончил универ(разработка по). Работаю .net разрабом(desktop, web, в общем всего понемногу). Параллельно изучают уже года 2 как андроид. В портфолио около 5 более менее нормальных приложений(3 последних - заказы с fl.ru). Это мне по душе, но у нас в мухосранске не востребованы android разработчики, по сию думаю свалить в дс2, дабы начать развиваться. В общем интересует инфа из первых уст: какова сейчас обстановка в дс2 с андроид-джунирами? Что требуется знать(не общие моменты, а какие-то нюансы)? На какую зп стоит рассчитывать в первое время? Вакансии бегло просмотрел, сложилось мнение что за 50-60 у джунов(полный рабочий день). Но фиг его знает, хотелось бы инфы из первых рук
>>463986 Держи, антон. Семидюймовка. Неплохая прога, кстати! Мне понравилось, красиво... единственное что у тебя в настройках Контролы не открываются. Ну и по сути, программа бесполезная. Няшная, но... вряд ли много скачек сможет набрать, имхо.
Я думал похожее. Типо при выходе из ждущего режима. Но решил что сильно нагружать будет и забил. Про раз в день не догадался. Косяки генератора исправлю и попробую .
С ракурсом по-моему просто - 30-60 градусов от горизонтальной плоскости.
>>457759 >2) Android Studio & Java - единственный легитимный набор. не пизди, на скале тоже можно писать, SBT & IntelliJ IDEA довольно хардкорно, зато няшный язык
Есть тут начинающие дизайнеры UI под андроид? Надо придумать интерфейс поикрасивее. Скорее свежие идеи нужны. Одна активити, графика только векторная в xml. Могу что-то небольшое написать в замен. Кому интересно - остааьте почту.
Сделал <view> с прозрачным градиентом на бэкграунде. Градиент задан в xml, цвета с альфой, типа 00FFFFFF. Но под градиентом не видно другие view, т.е. он не прозрачен. Почему?
Есть listview, в каждом элементе две кнопки на которых висит таймер и грубо говоря они меняют цвета. Все бы норм, но как сохранять состояния при скроле? Отказаться от холдера? Сейчас кстати попробую.
Програны, помогите. Ебаные пидоры возвращают JSON в котором одно поле иногда приходит как объект, а иногда как массив. Все это дело забирает и парсит связка robospice+retrofit+gson. Чтобы не ебаться, в модели это проблемное поле было объявлено как Object и написан геттер, который всегда возвращает масиив, вне зависимости от того, что пришло, масиив или объект. Теперь встала необходимость передавать экземпляр класса между фрагментами, для этого я попытался сделать класс Parcelable, но хуйтам, сраное поле с типом обжект не хотело передваться, тип поля я сменил с обжекта на кастомный, к которому тупо прикручен интерфейс парселабл. в итоге геттер перестал работать. Что делать? Как правильно парсить это проблемное поле?
>>464707 Пока мы не начали, сразу предупрежу что я стажер. Ну смотри, вот робоспайс вернул мне экземпляр этого класса и мне сразу же надо передать его в другой фрагмент, либо он мне вернул кучу экземпляров класса в массиве и я выбрал один и передал в другой фрагмент. Как тут поступить по-другому?
Народ, такая задача есть: выполняю запрос к вконтакту, далее приходит ответ - список песен, в каждой песне длительность в секундах. Далее я преобразую длительность в привычный всем нам вид: 3:34 или 1:3:34, если песня длится как минимум час. Проблема в том, что это самое преобразование работает медленно при большом колличестве песен. Тут и возникла мысль, а что если добавить все песни в список и потом в другом процессе запустить это преобразование и пускай оно там отдупляется. Так вот, как это правильнее организовать?
>>464528 Мб потому что нужно было делать View а не view >>464654 Зачем тебе Parcelable ? Он нужен когда передаешь обьекты между процессами, а не внутри одного процесса. Внутри одного приложения передавай через поля, да как угодно.
>>464528 Мб потому что нужно было делать View а не view >>464654 Зачем тебе Parcelable ? Он нужен когда передаешь обьекты между процессами, а не внутри одного процесса. Внутри одного приложения передавай через поля, да как угодно.
>>464757 Что за говно, содомит? Зачем ты часы, которые у тебя всегда будут равны нулю, берешь в кольцо вычетов? А мысль про отдельный тред неплохая. Только вот ты уверен, что проблема в преобразовании этом? Профайлер запускал?
Какие сайты почитать по андроиду, чтобы быть в курсе новинок и веяний? И вообще, расширить кругозор. Какие-нибудь годные обзоры приложений и тому подобное. По дизайну тоже. Кроме хабра, конечно же.
Можешь пояснить почему костыль? Вроде логично хранить состояние итема внутри него. Там же уже хранятся состояния вроде значения его описания и все такое.
Аноны, что полезного можно засунуть в прогу для закачки музыки из вк? Потоковое прослушивание, закачка, мои аудиозаписи уже есть. Пишу приложение для резюме, в быдлятне сижу редко - поэтому то, что актуально - не знаю
>>464980 Еще перед тем, как написать первую строчку кода своего приложения, ты должен был провести аналитику. Посмотреть аналоги, прикинуть кому и зачем твое говницо нужно, как оно будет выделяться на фоне кучи такого же говна и т.п. Сейчас, считай, ты уже проебался. А вообще, нашел где спрашивать. Иди в свой контактик и спроси у тех, кто им пользуется.
>>464983 >перед тем, как написать первую строчку кода своего приложения, ты должен был провести аналитику Я говорю о дополнениях и улучшениях. Основной функционал был придуман изначально. >зачем твое говницо нужно >Пишу приложение для резюме
>>464989 Так вот изначально и надо было продумывать все фичи, полностью.
>зачем твое говницо нужно >Пишу приложение для резюме Хуевый аргумент. Если это дженерик щит, ничем не выделяющийся на фоне аналогов, то он не нужен по определению, даже для резюме.
>>464980 Давай прототип, анон. Может подскажу чего. В контаче сижу редко, но хуй знает... Кстати, а чому только контач? Гугломузыку, Грувшарк, ещё парочку музыкопомоек не думал прикрутить? Как раз для резюме самое то. Если разовьешь, можно и бабосы начинать брать.
Есть активити в которой биндится сервис. Использую navigation drawer. В фрагменте используется сервис, вопрос - как мне оповестить фрагмент о том, что сервис забиндился и его можно юзать? Вообщем-то можно запустить beginTransaction().replace только тогда, когда сервис приконектится. Но что делать при повороте устройства? Сохранить в savedInstanceState название открытого фрагмента и после коннекта сервиса сделать beginTransaction().replace?
Аноны, начал осваивать Android. Использую Android Studio в своих извращениях. Не могу понять, почему в эмуляторе устройства я не могу вводить кириллицу (имеется ввиду ввод текста, например, в EditText объекты)
Анончики, такая ситуация. Хочу себе простенькое приложение для домашней бухгалтерии(готовые варианты изобилует кучей ненужной мне хероты). Сейчас это дело веду вот в такой вот эксель таблице - https://docs.google.com/spreadsheets/d/1dJQ84XlgZ1hMxHoJcQO051gDa7buPwcS9vuQob9YMMQ/edit?usp=sharing Подумал что было бы еще круче запилить приложения где всего одно поле и две кнопки - поле ввода потраченной/заработанной суммы. Список статей расходов и кнопка добавить. После чего сумма сама улетает в нужную яйчейку экселя. В идеале вообще виджет на рабочем столе. Так вот в чем проблема - можно что-то подобное на андройде запилить на php/js/html ? Садится изучать яву как то слишком для такой цели, уж проще заплатить будет. Но хотелось бы самому запилить, на знакомых инструментах, дабы всегда мог что то выпилить или допилить.
>>465575 Спасибо на даже как то неудобно у кого-то что то просить за просто так. За наводку спасибо, буду изучать, еще на какой то PhoneGap наткнулся. Да и самому все же проще - так как раз в пару месяцев какие то изменения или оптимизации в своей табличке пилю. Как эта еботня с курсом началась, так пришлось не мало голову поломать над тем, как сделать таблицу при том что платят в разных деньгах, которую быстро и удобно использовать, дабы видеть и реальный доход - ибо то что цифра сейчас больше чем пол года назад в 1.5 раза не значит что я могу себе в 1.5 раза больше позволить.
Сап, андроиданы. У меня проблема и хуй знает как ее решать. Вообщем пилю очередной видеоредактор на андроиде. Все бы ничего только заказчик хочет чтобы при соединении двух видео был переход с эффектами. Тоесть чтобы первое видео становилось прозрачным, или разъезжалось в стороны, или съезжало влево. А я реально не знаю как это делать и даже не знаю где искать инфу. Гугл молчит или дает какую-то ересь. Подскажите кто знает хотя бы где искать и что читать.
Есть navigation drawer. Заменяю один фрагмент другим через replace и добавляю в BackStack. В фрагменте А использую onSaveInstanceState для сохранения каки-то настроек. Когда открываю следующий фрагмент через replace и добавляю его в BackStack при смене ориентации ВНЕЗАПНО вызывается onSaveInstanceState у того, предыдущего фрагмента А. Какого хуя?
>>465673 Все правильно. При смене ориентации ведро грохает всю активити и передергивает её. Соответственно твой сток оно уже похерило. Лови такую хуйню на onSaveInstanceState в активити.
Вопрос скорее не к андроиду а к ооп в общем. Есть два класса товаров. Они идентичны, но должны находиться в разных таблицах и выводяться как вместе так и поодиночке. Суть в том что в выводе вместе я юзаю лист, потому сделал им отцовский абстрактный класс. Проблема собственно в том, что у меня получается два пустых блять класса все поля в абстрактном подтянул как и методы, реализация методов у них тоже одинакова.
и тут проблема: оно работает, но только когда на телефоне вырубается экран по неактивности пользователя. а я хочу чтобы работало всегда. как поступить?
Короче, есть табвью с двумя фрагментами-страницами. Первая страница должна быть статичной, вторая изменяться относительно первой т.е. принимать с нее данные и перерисовываться заново. Но я так понимаю что табсы могут быть либо все статичными, либо все динамичными и перерисовываться при слайде. Посоветуйте что-то.
Алсо, передачу данных думаю сделать через преференсы, можна конечно передавать из первого фрагмента в активити и потом уже вытаскивать во второй в онкриейтвью, но с преферансами выглядит проще и удобнее.
>>466494 Проблема в том, что для табвью создает экзепляр в единственном роде и не пересоздает. А если выбрать табвью которая всегда перерисовывает, то тогда та вкладка которая статическая будет тоже перерисовываться, можно и атк конечно, но что-то я ебал.
>>466390 проставил в манифест, не помогает. алсо, оно даже после того, как экран гаснет, отрабатывает только один раз (надпись на экране не меняется, а должна меняться), а я хочу чтобы оно запускалось всегда через определённый промежуток времени.
А почему только одна книга в шапке и та за 45$? В моей хохляндии это пол зарплаты. Господа, посоветуйте годную книгу по андроиду, уж очень я люблю их читать. Java Core уже освоил если что.
Суп двач, нубовый нуб вкатился в тред и просит совета. Есть две activity, нужно запускать вторую через 30 секунд после открытия приложения, то есть после старта первой активити. Как? Погуглил, но очень хуёво, и ничего не вышло. Помогите, ну плиииз :с
>>466938 кароч пишешь такой в onCreate final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { открыть вторую активити } }, 30000);
Привет всем. Пишу калькулятор, использую для вычислений Double. Проблема - маленький размер допустимых чисел, больше семи знаков до точки выдает число с E в конце. Что использовать вместо Double или как по другому решить проблему? Большая просьба помочь.
>>467257 шошта нета к? то что надо handler вынести в поле класса чтобы иметь возможность уничтожить все сообщения - это в случае проблем думаю ясно будет
>>467564 Проблема в том, что если закрыть приложение, активити останется в памяти из-за сильной ссылки со стороны хэндлера, который пррдолжает ждать те самые 30 секунд. Ты скажешь, что 30 секунд это хуйня, но дело не в секундах, а в том, что это говнокод as is.
Анонцы, подскажите, начал вкатываться в андроид. Нашел курсы Udacity, где 2 недели триала. По завершению курса надо сделать какой-то курсовой проект. Теоретически можно успеть пройти курсы, сделать проект, получить аттестат и ниразу не заданатив за обучение, 200$ очень уж дохуя
>>468099 Опиши реальный пример, пожалуйста, как закрыть приложение без onDestroy? Это только если система порубит видимый процесс? А в этом случае она не порубит handler?
Аноны! Пытался загрузить в код массив из строк (String[]) из xml (<string-array>). В документации написано, что, чтобы это сделать, нужно написать примерно следующее:
Resources res = getResources(); String[] planets = res.getStringArray(R.array.planets_array);
Но метод getResources() - никак не вызывается (пишет ошибку, не видит). Как с этим быть?
>>468222 В том то и дело, что статически я не могу его вызвать (Resources res = Resources.getResourses(); - не видит) Пробовал вариант
Resources res = Resources.getSystem(); String[] mFacts = res.getStringArray(R.array.facts_array);
Но и это не работает! Пишет вот о таком исключении.
android.content.res.Resources$NotFoundException
Типа бла-бла, ресурс плохой, не найти и всё подобное. Хотя он у меня лежит в strings.xml и оформлено всё по правилам!
<resources> <string name="app_name">Fun Facts</string> <string-array name="facts_array"> <item>""</item> <item>Ants stretch when they wake up in the morning.</item> <item>Ostriches can run faster than horses.</item> <item>Olympic gold medals are actually made mostly of silver.</item> <item>You are born with 300 bones; by the time you are an adult you will have 206.</item> <item>It takes about 8 minutes for light from the Sun to reach Earth.</item> <item>Some bamboo plants can grow almost a meter in just one day.</item> <item>The state of Florida is bigger than England.</item> <item>Some penguins can leap 2-3 meters out of the water.</item> <item>On average, it takes 66 days to form a new habit.</item> <item>Mammoths still walked the earth when the Great Pyramid was being built.</item> <item>Treehouse is not actually in a tree</item> </string-array>
>>468230 Я бы на твоём месте посмотрел в дебаггере, что находится в переменной res. Ещё бы проверил R класс на наличие соответствующей переменной с id, который указывается в ошибке.
>>468232 Вот эта фигня работает, а если отсылаем метод getApplicationContext() в качестве фактического параметра конструктора класса FunFacts, то опять фаталь экспешон... Хуета какая-то...
>>468111 В любом случае это говнокод. Выходит если onDestroy вызовется мгновенно, вторая активити не откроется. А если лишь через некоторое время - откроется. Зачем вообще ебаться со всем этим, когда есть AlarmManager? >>468187 Он может вызваться через минуту после того, как ты активити закроешь, например.
>>468111 А, забыл. > Опиши реальный пример, пожалуйста, как закрыть приложение без onDestroy? Так не бывает, но бывает так: onCreate onStart onResume ... onPause проходит 30 секунд onStop проходит ещё минута onDestroy
Это в ситуации, когда юзер реально закрыл активити.
>>468263 >onPause >проходит 30 секунд >onStop >проходит ещё минута >onDestroy Почему у меня такого никогда не было? Активити пропадает с экрана - мгновенный вызов onPause-onStop-onDestroy.
>>468267 С этим непросто столкнуться, но возможно. На различном китаеговне такое сплошь и рядом. И порой такие проблемы очень критичны. В конце концов, есть метод isFinishing, можно переопределять finish. Но полагаться на onStop и особенно на onDestroy - ни в коем случае.
Немного фрустрации в тред. Как вы вообще на этом тормозном говне пишете? Созданию новый проект с пустой активити, так он минуту, навреное, его инициализирует потом, и билдит потом по полминуты пустой, чёрт возьми, проект с тремя кнопками. На xcode у меня за одно только время открытия такого нового проекта создастся темплейт с опенгл игрой, скомпилится, и в эмуляторе запустится. Может я чего не так делаю и там есть скрытая настройка "не тормозить"?
>>468300 Признаю, на маке. Последующие билды, вроде как, пошли чуть быстрее, но и 10 секунд многовато, да и работает абы как. Второй эмулятор мне зачем-то запускает сейчас, после нажатия stop и run заново. Я не знаю, почему и xcode, и vb просто работают, а у андроид опять всё не так?
Помогите с асинхронкамиАноним25/04/15 Суб 10:58:18#375№468593
Посоны, третий день уже ебусь с AsyncTask, оно выдаёт ошибки вот такого вида:
E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 Process: myapps.[имя_приложения], PID: [процесс] java.lang.RuntimeException: An error occured while executing doInBackground() [...] Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[] at myapps.streamplayer.MainActivity$MyTask.doInBackground(MainActivity.java:149). Номер строки 149 - это первая строка цитируемого куска кода.
Упростил до предела, изъял вообще всю деятельность, а оно всё равно вылетает с такими же ошибками.
[code] class MyTask extends AsyncTask<Void, Void, Void> {
Мне нужно чтоб приложение понимало когда вырубаеться интернет на телефоне и переходило в режим сохранения данных на локальную бд, потом при появлении интернета данные начинали отсылаться. Я так понимаю что нужно цеплять сервис? Я с ними еще не работал просто.
>>458114 >http://learndroid.e-legion.ru/ Школа - хуита редкая, заргался, прошел первые 2 урока. Второй чудак (да и первый) начинает нести какую-то пургу про бэкграунд-фореграунд, как-будто ньюфаг вообще понимает о чем речь. Нихуя никто нормально не объясняет, пересказ документации по сути Ну и выглядят чуханами-красноглазиками-омегами какими-то, сразу программировать под андроид желание пропало мимо-веб-хайлоад-альфа
>>468750 Ну вот блять прямо сейчас смотрю >Когда мы из одной активити стартуем еще одну активити, для нее создается отдельный таск, наша исходная активити остается в своем таске одна, а новая запускается в отдельном
> очевидно, что для параметров сингл таск и сингл инстанс активити существует в системе в единственном экземлпяре и она является корневой, самой нижней активити 17 минута второй лекции так-то
>>468596 Тебе не нужен сервис. Сделай ресивер, чтоб получал интент на android.net.conn.CONNECTIVITY_CHANGE и там меняй какую-нибудь переменную, которая будет указывать, куда сохранять данные. Или, если ты быдло, при сохранении данных проверяй соединение и в случае его отсутствия сохраняль в локальное хранилище.
>>468761 Так а разве норм юзать ресивер если у меня несколько активити? На какой его вешать? Не может случится ли такое что андроид убьет старое активити с этим ресивером?
>>468827 Отдельным классом бродкаст ресивер сделай и в активити объяви, я вообще не понял, о чём ты волнуешься. Ни на какую активити ресивер не вешается, методом registerReciever ты не пользуешься, он у тебя сразу зареган и получает бродкасты на всём протяжении существования процесса приложения.
>>468593 А ты пробовал onPreExecute без аргументов вызвывать? Потому что в суперклассе-то он без аргументов, а иначе override бессмысленен. А с аргументов в preexecute твой код у меня даже не компилируется (на какие-то депрекейшны ругается)
Хочу сделать stream socket подключение с телефона к серверу и обмениваться байтиками. Есть ли какие-либо дефолтные способы сделать это с событиями, а не бесконечным лупом с блокирующим BufferedReader.readline() в нём? Чтобы как в ios: inputStream.scheduleInRunLoop() и потом eventHandler(stream, eventCode) в делегейте уже обрабатывает все подключения, эрроры, потери и окончания связи, полученные данные и т.д. А то не хочется городить свои костыли.
Студия перестала видеть устройство и дженимоушен тоже, такое ощущение что что-то сломалось, ругаеться еще что нету модуля сдк. Как откат сделать или еще что-то?
>>468761 >там меняй какую-нибудь переменную, которая будет указывать, куда сохранять данные. Решил сделать режимами, офлайн и онлайн. Где держать состояние? Синглтон создавать для этого? Или так в ресивере и держать?
>>469285 Алсо, на счет синглтона, ресивер в манифесте работает даже без запущенного приложения, как результат, если состояние измениться когда приложение не запущенно то данные не сохранятся в синглтоне так как его еще не существует, и в итоге я запускаю приложение, интернета нету, и я не знаю об этом.
Потому с преференсами мне кажется будет правильнее. Поправь если ошибаюсь.
>>469287 Можно. Только тогда вместо статик переменной ты будешь хранить статик название преференса. Да, это наверное, лучше, так как переменная названия преференса будет final. Но там просто эта реализация занимает больше кода и мне кажется, что это будет менее читабельно. Я сейчас погуглил и увидел, что глобал переменные - плохо, но сам я никогда с описаными проблемами в android не сталкивался. Но я сам довольно ньюби, так что особо меня не слушай, я увидел вопрос, посоветовал, что знаю, а все эти заморочки уровня как лучше переменные хранить, сам не знаю.
Может я задам сейчас кучу наитупейших вопросов, но все же не гоните меня сразу. И так, хочу создать приложение под андроид - там есть возможность регистрироваться, постить фотографии, оставлять комментарии в профили и под фотографиями. Да, я понимаю что это сложно, это аналог соц. сети с урезанным функционалом, который я буду делать хренову тучу времени и его даже ни кто не скачает. Теперь вопросы: мне посоветовали учить SQLite и Джаву. Может есть какие-нибудь высокоуровневые библиотеки для этого всего?
>>469374 Высокоуровневый юнит для таких задач называется - наемный сотрудник. Ты физически не сможешь и одновременно заниматься раскруткой "соцсети" и программировать (а помимо программирования клиентского приложения еще и дизайн требуется, ну а про серверную часть твоей "соцсети" вообще разговор отдельный).
И на счет SQLIte тебе немного приврали, судя по всему, ты хочешь многопользовательское приложение, SQLite же используется сугубо на устройстве. В принципе реализовать можно и средствами SQLite, но это будет дикий и сложный костыль.
Тебе, скорее, подойдет Java + какой-то серверный язык (Да или та же джава, там есть механизм сервлетов и всякие спринги) + MySQL, PostgreSQL или NoSQL, как душа пожелает, в общем
Спасибо. И так, мне нужно будет подучить джаву + серверный язык, а что учить для, именно андроида(со всякими управлениями кнопками, хмлМанифестами и т.д.)? То что в шапке треда подойдет? + как я понял бесплатного сервера не существует, я в общем -то не собираюсь использовать это как серьезное коммерческое решение, скорее я просто хочу побаловаться, можно как-то будет протестить, если я тот же апач на пек ебану с эмулятором - все будет так же как на реальном сервере?
>>469380 + Вопрос со всем не в тему, правоохранительные органы ни как не могут подать на меня в суд за контент который выкладывают пользователи? >>469381 Ну, я шалун, лол думаю что я и так не занят ни чем по вечерам + это поможет мне в учебе в институте, ну, или помешает.
>>469387 Это плохо, даже если у меня нет ни какой направленности соц-сети, то есть, она форомлена так, что на заднем плане сердечки, медвежата и бабочки, а пользователи постят несколько другие изображения и незамысловатые комментарии с фотографиями различных мест
>>469391 Я просто подумал что эта чатсть рынка свободна, но, блядь, не писать же серьезный бизнес-план под который дадут кредиты, нужно создать все самому, или хотя бы с несколькими друзьями + не о каких сео мечтать даже не приходится, в общем не надо меня банить, я и так сильно рискую, просто начав это делать.
>>469392 1) ты наркоман и не умеешь формулировать свои мысли, тебе нужен штат людей, которые из тебя будут клещами вытягивать "бизнес-план" 2) ты студент, и денег для оплаты труда, необходимого для всего того, что мы уже рассмотрели - а рассмотрели не все нюансы - у тебя нет. 3) такого не бывает, чтобы дунул с корешами и у вас появилась "соцсеть" - даже если толковые кореша, ты, наркоман, будешь им только мешать. Но скорее всего вы все наркоманы, в общем, не забивай себе голову, иди еще дунь, может отпустит от идеи "соцсети"
>>469393 Я и не писал что "дунуть с корешами", и все появится, вообще мне уже достаточно ответили и я укатываюсь. Тем более что мы поднимаем темы далекие от темы треда
Аноны, у кого-то была такая хуйня? Просто вылазит поверх всех экранов, ставил 3 антивируса, никто ничего не нашёл. Приложений сторонних вообще не устанавливал, откуда это говно могло взяться?
>>470020 Скачай эмулятор консоли на андроид или зайди через adb shell и через команду ps посмотри список процессов, может чего и найдёшь. Если погромизд, то можешь сделать простую программу с сервисом и посмотреть, что за пакет в форегроунде.
Есть ViewPager, в нем 12 вкладок. Внутри 12 одинаковых фрагментов, в каждом фрагменте ListView. Нужно сделать так, чтобы при пролистывании данные в списке фильтровались.
Всё проблема в том, что когда скролю с одной страницы на другую, список фильтруется и в предыдущем фрагменте и всё это выглядит очень дергано.
Я подозреваю, что надо каким-то образом создавать свой список для каждого фрагмента, но не пойму как
>>470102 У тебя есть главная активити. На ней 12 фрагментов. Можно кучей способов делать. Если список есть в главной активити. 1)Из нее легко можно передать список в любой из фрагментов. 2)Из любого фрагмента можно вызвать гетАктивити и приводить тип явным преобразованием к МайАктивити где можно достать все паблик методы активити. Аналогичную штуку можно делать через интерфейс чтоб более ентерпрайзно было. Если списка в активити нету, то он по-любому где-то хранится. Просто в конструкторе фрагмента вытаскиваешь данные из бд или чего либо и сортируешь, в листадаптер засовываешь уже отсортированые данные.
Аноны, подскажите, как ебануть прячущийся ActionBar по скроллу ListView? Пытался сделать используя последний видимый элемент, получается какая-то дёрганая хуйня
>>470382 Помню, для такой хуйни пилил костылик. Был сложный листенер, который при скролле отслеживает перемещение центрального дочернего элемента, на основе этих данных расчитывалось реальное смещение в пикселях. Эти данные уже использовались в Атрейдес дальнейшем. Попробуй также с сделать.
>>457759 > 3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах. Тут можно по подробнее? Я вообще-то думал обмазаться ксамарином в недалеком будущем. И почему для богатых? Он же бесплатный вроде как. Платное там только ихнее облако для тестирования, которое нахуй никому не упало.
>>470473 Обычный гуглплеер так работает, если скролить через боковой бигунок, оно криво отображает анимацию. Думаю там сделанно также.
>>470530 >push уведомлениями И как ты это делать планируешь? Чтоб получить пуш через гуглмеседжинг нужно для начала ему запрос отправлять. А это уже работа ббекенда.
Пытаюсь решить очередной вопрос мироздания: как представить допизды иерархической информации на девайсе, а точнее на 1 экране?
В голове пока то, что на пикрелейтед, чтобы постепенно открывать нужные уровни и при этом можно было доскроллить до любого уже открытого момента. Как вариант, сделать обычное иерархическое дерево слева, а справа уже самый последний уровень? Хотя последнее, имхо, пойдет только для планшетов. Да и не хочется разрывать элементы на части почему-то.
Еще одна хитрость: дерево имеет динамические элементы, к примеру, у каждого конечного элемента (текста) есть ветвления вроде "референсы на этот элемент", "куда мы ссылаемся", или даже какие-то обработчики вроде "найти сравнения". Можно даже пойти дальше - каждая строка - отдельный элемент и из него могут расти новые элементы, к примеру, нажал на "СССР" - вылез сниппет про него.
Собственно, вопросов 2: 1. как это сделать 2. чем это сделать? (создать свой адаптер и ебать обычный лист?)
Пример с вики вымышленный, сюда можно подставить что угодно, хоть коллекцию музыки, хоть сборник кулинарных рецептов. Не уверен что сюда, но создам отдельный тред если нет.
>>470541 >И как ты это делать планируешь? Так ГЦМ же только для разгрузки своего сервака, когда у тебя 10 000 000 активных юзеров. Раз в минуту шли запрос и смотри на кол-во постов - появились новые - покажи уведомление.
>>470020 Говно могло сидеть в заводской прошивке, или придти с чем-то "не левым", наверняка какую-то игрушку с маркета поставил. Или кто-то из семьи это сделал, например, зайдя на трояненый сайт.
В настройках разработчика поставить отображение процессов, когда гадость появится - поелозить быстро пальцем, в самом верхуй увидишь имя этой гадости. Далее, как уже сказали, через adb shell pm uninstall _имя_ эту гадость удоляем. Если оно системное, то придется перемонтировать системный раздел (нужен рут в adb)
Посоветуйте либу для выполнения синхронных Http запросов. Нужно делать запросы в БД, потом делать 10 запросов последовательно, далее снова с БД работать.
>>470632 Он ведь одноуровневый? Сотни тысяч (суммарно) строк в него не сунуть? (правда я не знаю, стоит ли совать сразу все 100к строк, или подгружать при кликах юзера)
Как гуглить инфу про создание экрана - помощи по интерфейсу? Когда затемняется вся область экрана, выделаются отдельные элементы интерфейса и появляются подсказки - какой для чего?
Помогите, посоны, что-то нагуглить не могу. Можно ли как-то в спиннере выпадающем списке связать позицию с определенным значением? Типа будет список "Кошка, Собака, Мышь", если выбрали кошку - х=10, если собаку - x=25 и тд. Что-то лучше, чем последовательность if есть же?
>>470925 Вот только собеседующие меня так не считали. К ним я не попал работать, а попал в тырпрайз, так что выяснить, кто прав не получилось. Еще вопрос: есть REST сервис, отдаёт коллекцию объектов в JSON, опиши как будешь писать приложение, которое их получит и отобразит.
>>470928 Здесь я собеседование и проебал. Конкретно с рестом хз, но вангую запилить контент провайдер с бдшкой, сервис в который закидывать асинк таски. Но думается мне, что на всякие контент провадеры можно забить, распарсенные объекты хранить в памяти, а грузить также асинктасками в сервисе.
>>470928 Если сложная структура ответа - распарсю при помощи Gson в 2 строки, если очень простая - через встроенный парсер. Асинхронные хттп запросы - через либу loopj или если очень надо - urlconnection в асинктаске. Хранить не надо, надо только отобразить- ну ок, отображаем значит.
6 Мая на курсере стартует первый набор лекций для программирования под андроид. Курсы от университета Мэрилэнда. Это часть специализации "облачные приложения под андроид". Вот ссылка:
Домашка каждую неделю. В конце 5 недельного курса - небольшой проект. После каждой лекции набор тестов. Все на английском, есть английские субтитры. Программа бесплатная. За 50 бакинских можно получить бумажный сертификат об успешном прохождении, если пройдете. Длинна каждой недельной лекции час-два. Не помню точно. Курс не совсем для новичков, если нет базовых знаний в программировании, знаний явы и андроида то ничего хорошего не получится. Я пытался проходить осенью но забил из-за сложности и занятости. Тогда они рекламировали себя тем, что топ-10 студентов смогут подать свое резюме в HR-отдел Amazon. Плюс там была лекция от гостя, в которой они показывали как использовать Amazon API. Дерзайте кароч.
С критикой курсеры или этого курса на этот пост не отвечайте. Мое дело донести эту инфу до тех кому это интересно. Пишите сюда те кто планирует проходить, будем координироваться.
Есть лайаут с сикбаром и несколькими текствью. Используется много так что я сделал свой класс расширяющий LinearLayout. Сейчас мне надо сделать тоже самое для Preference и собираюсь расширять DialogPreference. Но там будет буквально все тоже.
Копипастить? Или кинуть мою готовую вьюху в новый лайаут и уже из него делать класс расширяющий DialogPreference? Если второе то как передать атрибуты которые опишу в preferences.xml в мою вьюху?
>>470579 Допизды - это сколько? Если на верхних уровнях инфы немного - можешь замутить NavigationDrawer - ActionBar - Табы. Внутри табов - уже списки. Но тут зависит от конкретной задачи, такой способ может просто быть не самым удобным. А вообще, на одном экране даже то, что на пике, в ведроиде представлять не стоит, ибо для маленьких экранов это в любом случае будет вырвиглазо-неудобно
>>471075 Допизды - это до 4 000 000 000 элементов (реально конечно меньше), текстовый файлик с инфой весит до 100-150 метров (по разному). Если свернуть на один уровень, то примерно до 50 000 элементов остается. Следующий уровень свертки - от 10 до 100 элементов. Потому в табах делать первый уровень - плохая идея.
Как блять завставить апликуху послать запрос на сервер до того как она вырубиться любым из возможных вариантов. Ондестрой нихуя не пашет при закрытии через боковой свайп.
>>471074 Не обязательно платить. Можно просто курс пройти и получить сертификат на почтовый ящик в виде пдф-файла. За 50 приглют отпечатанный на принтере с какими-нибудь печатями. От него толку никакого. Главное знания и практика.
>>471290 Думал делать через онПауз и онРезюм, но это будет хуево влиять на логику работы сервиса сервиса в смысле проекта. >>471377 Двачую. Как вообще с девайса дать понять бекенду что я не в онлайне?
Антуаны, как называется фича, например в гугл маркете или телеграме, которая выползает при проведении пальца от левого края экрана. я затупок походу. хочу себе такую же накодить
Коротко о главном:
1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - то добро пожаловать в андроид разработку.
2) Android Studio & Java - единственный легитимный набор.
3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах.
4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js.
Где брать инфу:
Интернет-ресурсы
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. Хотя чего тут объяснять.
Книги их никто не читает но все советуют только одну
1) The Busy Coder’s Guide to Android Development
Отдадим дань старому треду:
>Делимся своими графиками заработка, палим годные способы привлечения большей публики и выхода в топ100, бугуртим, быдлокодим, учимся, делаем первые шаги, лайкаем и оставляем приложениям отзывы за бесплатно.
Пред. тонет тут: https://2ch.hk/pr/res/434414.html