Я нахожусь в осмыслении/стадии проектирования создания приложения, и я наткнулся на что-то вроде препятствия. По существу я искал способ встроить одно действие в UI другого подобного как TabHost/TabActivity. Было бы окно наверху экрана, который будет содержать другое действие, и ниже этого были бы кнопки и средства управления, которые независимы от вышеупомянутого действия и должны всегда быть видимы. Пользователь смог бы перейти от одного действия до другого в окне, не вызывая изменения в ниже средств управления.
При изучении проблемы я натыкался на ActivityGroup, который был похож на нее, будет полезно, но как я реализовал бы ее? Кто-либо имеет опыт с ActivityGroup или имеет другую идею?
Да, вы реализуете ActivityGroup, которая будет контейнером для других ваших Activities. Когда пользователь нажимает на одну из кнопок, вы получаете ссылку на 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, а не на внутреннюю Activity. Вы должны найти какой-то способ фокусировать внутреннюю активность после добавления ее в представление контейнера, и тогда четное событие произойдет во внутренней активности и распространится на активность контейнера.
Это можно сделать, я делал это... и это работает. Это просто немного сложнее, чем я думаю.
В любом случае, большую часть этой информации я получил, просматривая код TabHost, который можно найти здесь