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

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
yuriy m
Сообщения: 5
Зарегистрирован: 13 июл 2015, 17:55

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

Сообщение yuriy m » 13 июл 2015, 18:22

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

Dark67
Сообщения: 72
Зарегистрирован: 23 июл 2012, 23:11

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

Сообщение Dark67 » 14 июл 2015, 12:09

А что именно должно перейти в MainActivity? Внешний вид кнопки, обработчик нажатия и тп?

Sasha2dx
Сообщения: 51
Зарегистрирован: 10 апр 2015, 23:24

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

Сообщение Sasha2dx » 14 июл 2015, 14:06

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

yuriy m
Сообщения: 5
Зарегистрирован: 13 июл 2015, 17:55

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

Сообщение yuriy m » 14 июл 2015, 14:50

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

Dark67
Сообщения: 72
Зарегистрирован: 23 июл 2012, 23:11

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

Сообщение Dark67 » 14 июл 2015, 15:40

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

Sasha2dx
Сообщения: 51
Зарегистрирован: 10 апр 2015, 23:24

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

Сообщение Sasha2dx » 14 июл 2015, 15:53

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

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

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

yuriy m
Сообщения: 5
Зарегистрирован: 13 июл 2015, 17:55

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

Сообщение yuriy m » 20 июл 2015, 12:48

Спасибо ребята,Натолкнули немного на мысли ...Пока уехал в командировку ,приеду буду разбираться .

yuriy m
Сообщения: 5
Зарегистрирован: 13 июл 2015, 17:55

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

Сообщение yuriy m » 20 июл 2015, 14:05

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

Ответить