Android ViewGroup删除视图?

时间:2011-07-12 16:12:31

标签: java android

我有一个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死亡,变为空或其他,反之亦然。我想这样做是因为我管理这些观点的方式似乎有问题。 (加载视图时出错,加载另一个视图,然后再加载第一个视图等)

3 个答案:

答案 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
    }
});