У меня есть табуст. Одним из видов вкладок является ViewGroup. Эта группа просмотра управляет двумя различными видами деятельности. Я делаю это, поэтому я могу перемещаться между действиями внутри вкладки. Я добавляю следующие действия:
if (videoViewLive == null)
videoViewLive = getLocalActivityManager().startActivity("VideoPlayerLive", new Intent(this,VideoPlayerLive.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
videoViewLive.setVisibility(View.VISIBLE);
this.addContentView(videoViewLive, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT));
Каждый из моих видов представления контента получает асинхронные уведомления. То, что я хотел бы сделать, - это как-то удалить вид активности/содержимого, который не используется. Таким образом, по сути, я загружаю контентный вид A, B dies, становится нулевым или каким-либо другим, и наоборот. Я хочу сделать это, потому что способ управления этими взглядами кажется проблематичным. (ошибки при загрузке представления, загрузка другого представления, загрузка первого и т.д.)
Вы пробовали ViewGroup.removeAllViews()
?
Я бы попробовал следующий подход:
//Add OnGlobalLayout Listener using ViewTreeObserver
View rootView = (android.R.id.content);
//Assuming you are managing these two activities inside the ViewGroup
Activity activityA = <someRef Value>;
Activity activityB = <someRef Value>;
rootView.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){
//try couple of things here
// 1. determine which activity has focus
// 2. you could also check position of View on screen to determine which one is active or on the top
if (activityA.hasWindowFocus())
{
//do some action --remove other content from ViewGroup
}
});
Это отчасти касается этой проблемы, но почему вы делаете это с помощью отдельных видов деятельности?
Это именно то, что предназначалось для Fragment
. На самом деле существует класс, называемый ViewPager
входящий в библиотеку поддержки Android (см. Также FragmentStatePagerAdapter
), который допускает такое же поведение посредством вкладок (возможно, в ActionBar
) или прокрутки. Адаптер автоматически обрабатывает жизненные циклы Fragment
при перемещении между ними, все в контексте одного Activity
, так что вы можете использовать Activity
верхнего уровня для маршрутизации событий и, при необходимости, поддерживать общее состояние.