Android: использование ActivityGroup для встраивания деятельности - PullRequest
15 голосов
/ 16 июля 2010

Я нахожусь на этапе концептуализации / проектирования при создании приложения, и я столкнулся с проблемой.По сути, я искал способ встроить одно действие в пользовательский интерфейс другого, похожее на то, как TabHost / TabActivity.В верхней части экрана будет окно, которое будет содержать другое действие, а под ним будут кнопки и элементы управления, которые не зависят от указанного выше действия и всегда должны быть видны.Пользователь сможет переходить от одного действия к другому в окне, не вызывая каких-либо изменений в приведенных ниже элементах управления.

При поиске проблемы я наткнулся на ActivityGroup, которая выглядела как полезная, ноя бы это реализовал?У кого-нибудь есть опыт работы с ActivityGroup или есть другая идея?

Ответы [ 2 ]

20 голосов
/ 16 июля 2010

Да, вы реализуете группу действий, которая будет контейнером других ваших действий.Когда пользователь нажимает одну из кнопок, вы получаете ссылку на LocalActivityManager, используете ее для запуска и встраиваете внутреннюю активность.Примерно так:

LocalActivityManager mgr = getLocalActivityManager();

Intent i = new Intent(this, SomeActivity.class);

Window w = mgr.startActivity("unique_per_activity_string", i);
View wd = w != null ? w.getDecorView() : null;

if(wd != null) {
    mSomeContainer.addView(wd);
}

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

Это можно сделать, ясделал это ... и это работает.Это немного сложнее, чем я думаю.

Во всяком случае, я получил большую часть этой информации, посмотрев код TabHost, который можно найти здесь

4 голосов
/ 11 ноября 2010

Проверьте следующую ссылку

http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html

Это решение для меня.Надеюсь, это поможет и вам

...