Страница 1 из 1

Как перетащить кнопку с активити1 на активити ?

Добавлено: 13 июл 2015, 18:22
yuriy m
Доброго времени суток. Более 20 лет занимаюсь,сложной электроникой. Знаю язык си для контроллеров. И вот на старости годов решил поднять свои знания в области андроида. Изучать начал недельку назад,принципе простенькие вещи получаются,но есть проблемка. Бьюсь третье сутки. Допустим есть Маинактивити,на ней кнопки которые стоят на определенных местах. При нажатии коротко - выполняют некую программу. При нажатии с удержанием мы попадаем в активити1 ,где есть много разных кнопок,которые мы можем повесить на маинактивити в место старых. То есть ,допустим нажимаю в маинактивити кнопку2 . При ее удерживании я попадаю в активити1. Далее из допустим 20ти кнопок я нажимаю на кнопку 7 .При нажатии на кнопку 7 или любую другую,я должен вернутся в маинактивити и та кнопка с которой я переходил на активити1 (2),должна замениться кнопкой 7 . Причем 7ка должна остаться и на активити1. Ребята подскажите как примерно можно организовать такой алгоритм ? С джавой не дружу ,но пытаюсь подружиться... :) Спасибо

Re: Как перетащить кнопку с активити1 на активити ?

Добавлено: 14 июл 2015, 12:09
Dark67
А что именно должно перейти в MainActivity? Внешний вид кнопки, обработчик нажатия и тп?

Re: Как перетащить кнопку с активити1 на активити ?

Добавлено: 14 июл 2015, 14:06
Sasha2dx
В маин-активити на кнопочки вешайте 2 обработчика, слушатель обычного нажания и долгого нажатия, при долгом нажатии создаём интент и стартуем второе активити используя startActivityForResult (урок 29-30-...), клик на кнопке во втором активити финиширует его и возвращает что то в первое активити..первое активити полагаясь на полученные данные меняет своё отображение.
Такое моё видение решения, не исключено что есть ещё более правильные и лёгкие способы реализации.

Re: Как перетащить кнопку с активити1 на активити ?

Добавлено: 14 июл 2015, 14:50
yuriy m
Sasha2dx писал(а):В маин-активити на кнопочки вешайте 2 обработчика, слушатель обычного нажания и долгого нажатия, при долгом нажатии создаём интент и стартуем второе активити используя startActivityForResult (урок 29-30-...), клик на кнопке во втором активити финиширует его и возвращает что то в первое активити..первое активити полагаясь на полученные данные меняет своё отображение.
Такое моё видение решения, не исключено что есть ещё более правильные и лёгкие способы реализации.
Два обработчика у меня уже есть . При кратком нажатии кнопка 2 ,допустим меняет текст,а при длинном переходит на другое активити. Это все работает. Загвоздка в том как при нажатии любой из кнопок из второго активити ,допустим 7 , она заменила кнопки 2 на первом активити и выполнять стала другую функцию. Допустим что-то включать.Так как каждая кнопка из второго активити имеет свою функцию.
Другими словами.- Есть основное активити ,на ней находятся допустим шесть кнопок.Которые должны быть всегда под рукой. Каждая кнопка что-то делает. Но прошло время и я захотел поменять кнопки или местами или изменить функции этих кнопок. Для этого я по длинному нажатию захожу в другое активити ,где этих кнопок пару десяток и каждая выполняет свою функцию. При нажатии на любую кнопку из этого второго активити ,допустим 7 ,она должна заменить кнопку на главном активити, которую я только что нажимал длинным нажатием. И выполнять уже свою функцию,при коротком нажатии.

Re: Как перетащить кнопку с активити1 на активити ?

Добавлено: 14 июл 2015, 15:40
Dark67
Пока вижу решение задачи с помощью создания отдельного класса MyButton. И добавлять в лэйаут объекты именно этого класса

Re: Как перетащить кнопку с активити1 на активити ?

Добавлено: 14 июл 2015, 15:53
Sasha2dx
Все эти "функции" так или иначе должны быть написанны в первом активити, второе только меняет их. Вот ещё вариант реализации, который мб даже проще, я так понимаю что вид первого активити должен сохранятся после перезапуска, а значит должен где то хранится, можно, например, хранить в Preferences (урок 33), и вокруг них всё закрутить. Зажимая кнопку на первом активити - стартуем второе и передаём ему ид кнопки (урок 28 extras), кликая на новую функцию в активити 2 - она перезапишет сохранённый ранее ид функции для данной кнопки и финиширует второе активити. И последняя часть: обработчик в первом активити для обработки простого нажатия: берёт ид кнопки, по нему вытаскивает из Preferences ид функции, и передаёт её свитчу который запускает нужную операцию.

Код OnCreate тоже может опиратся на сохранения в Preferences что бы менять свой вид (вид кнопок/иконок/их текст и картинка) при создании. Правда как это повлияет на производительность - я хз, пока что не стыкался.

Такое моё видение, не стоит воспринимать его как абсолютно правильное, я пишу его опираясь на те знания которые у меня есть.

Re: Как перетащить кнопку с активити1 на активити ?

Добавлено: 20 июл 2015, 12:48
yuriy m
Спасибо ребята,Натолкнули немного на мысли ...Пока уехал в командировку ,приеду буду разбираться .

Re: Как перетащить кнопку с активити1 на активити ?

Добавлено: 20 июл 2015, 14:05
yuriy m
Dark67 писал(а):Пока вижу решение задачи с помощью создания отдельного класса MyButton. И добавлять в лэйаут объекты именно этого класса
Если я правильно понимаю ,это относиться ближе к ООП ?