我有一个tabhost。标签的一个活动是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死亡,变为空或其他,反之亦然。我想这样做是因为我管理这些观点的方式似乎有问题。 (加载视图时出错,加载另一个视图,然后再加载第一个视图等)
答案 0 :(得分:4)
您是否尝试过ViewGroup.removeAllViews()
?
答案 1 :(得分:0)
这与此处的问题相关,但为什么要使用单独的活动进行此操作?
这正是Fragment
的设计目标。实际上ViewPager
中包含一个名为android support library的类(另请参阅FragmentStatePagerAdapter
),该类允许通过标签(可能在ActionBar
中)或滑动进行相同类型的操作。适配器在您在它们之间导航时自动处理Fragment
的生命周期,所有这些都在单个Activity
的上下文中,这样您就可以使用顶级Activity
来路由事件并在必要时保持总体状态。
答案 2 :(得分:0)
我会尝试以下方法:
//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
}
});