Можно ли редактировать содержимое родительского Activity при использовании SlidingActivity

Я создаю приложение и использую библиотеку под названием «SlidingActivity». [Ссылка на Github]

На самом деле у меня есть два занятия. Одно из них является основным видом деятельности приложения, а другое - расширением SlidingActivity. Поэтому, когда SlidingActivity открыт, все еще можно увидеть основную активность в фоновом режиме (см. Изображения на странице Github).

Можно ли редактировать содержимое / макет основного действия при открытом SlidingActivity? Я пробовал использовать getParent(), но он возвращает null.

Обновлено: как предложил @Hamza Hathoute, я попытался переопределить onPause() и onDestroy(). Я видел, что onPause() вызывается каждый раз, когда открывается SlidingActivity.

Заранее спасибо. Я новичок в StackOverflow, поэтому, если я что-то сделал не так, сообщите мне!

1
0
64
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Проблема, с которой вы столкнулись, - это проблема общения. То есть вы хотите, чтобы SlidingActivity сообщал MainActivity, что ему следует изменить свое содержимое. Хотя есть несколько подходов к этой проблеме, самым простым может быть использование LocalBroadcastManager для отправки трансляции.

Редактировать:

Операция, которая не находится на переднем плане, может быть прекращена ОС в ситуациях нехватки памяти. Таким образом, вы должны зарегистрировать свой приемник в onCreate и отменить регистрацию в onDestroy. Поэтому возможно, что вы пропустите трансляцию (если ваша деятельность была уничтожена при отправке трансляции).

Если вы хотите охватить этот случай, тогда, если вы не хотите иметь дело с постоянством (общие настройки, db), вам, вероятно, следует использовать параметр startActivityForResult, упомянутый в другом ответе. Обратной стороной этого подхода является то, что изменения в MainActivity не сразу. Поэтому, если скользящая активность не является полноэкранной, вы не увидите изменений в MainActivity.

Ооо, я понимаю. Я попробую! Но действительно ли другое действие все еще выполняется или действие в фоновом режиме просто клон содержимого предыдущего? Большое спасибо !

Neïl 29.07.2018 23:01

К моему ответу добавлена ​​дополнительная информация

MidasLefko 30.07.2018 09:10

@ Neïl Думали ли вы об использовании фрагмента вместо нового действия? Затем вы можете просто использовать интерфейс для связи и обновления своей активности.

MRah 30.07.2018 19:13

@ MRah Это хорошая идея, но я новичок в Android, поэтому пока не совсем понимаю код библиотеки. Как только я смогу полностью понять, как это работает, я могу попытаться сделать его фрагментом вместо Activity.

Neïl 31.07.2018 14:26

@ Нил Я счастлив, что это сработало. И добро пожаловать в StackOverflow!

MidasLefko 31.07.2018 15:52

Если вы хотите показать основное действие в фоновом режиме, вы можете использовать прозрачный фон для скользящего действия.

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

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

Если ваше скользящее действие всегда возвращает некоторые результаты основному действию, вы можете использовать startActivityForResult,

См. Здесь для реализации: Как управлять startActivityForResult на Android?

is really the other activity still running or is the activity in the background just a clone of the content of the previous one?

Вы можете проверить это, переопределив onPause и onDestroy и добавив сообщение журнала. Если он не отображает никаких сообщений, вы определенно можете его отредактировать, просто обратите внимание на производительность.

Это хорошая идея! Если он все еще работает, я буду следовать ответу от @MidasLefko, иначе я попытаюсь найти представление, в котором клонируется контент.

Neïl 30.07.2018 12:13

так тебе удалось заставить его работать? Я заинтересован в том, чтобы реализовать это в своих будущих приложениях.

Hamza Hathoute 01.08.2018 14:18

Ага, отлично работает! Я отредактировал свой вопрос ~ 5 дней назад, чтобы поделиться своим прогрессом в отношении вашего ответа. Поскольку основное действие просто приостановлено, я последовал за ответом @MidasLefko, и он отлично работает с LocalBroadcastManager!

Neïl 04.08.2018 15:38

Приятно слышать это, я обязательно буду реализовывать SlidingActivity в своих будущих приложениях.

Hamza Hathoute 04.08.2018 20:13

Другие вопросы по теме