андроид: использование ActivityGroup для встраивания операций

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

При изучении проблемы я натыкался на ActivityGroup, который был похож на нее, будет полезно, но как я реализовал бы ее? Кто-либо имеет опыт с ActivityGroup или имеет другую идею?

15
задан mtmurdock 16 July 2010 в 13:25
поделиться

1 ответ

Да, вы реализуете 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, который можно найти здесь

20
ответ дан 1 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: