如何从其他活动访问活动视图

时间:2012-11-01 19:19:34

标签: android

我需要从子活动中隐藏TabHost的标签。我试过getParent()但它没有用

也尝试过:

TabHost th = (TabHost) ((TabsActivity)getBaseContext()).findViewById(android.R.id.tabhost);
        th.setVisibility(View.INVISIBLE);

但它会抛出一个nullpointer

2 个答案:

答案 0 :(得分:1)

永远不要从当前Views直接访问其他Activities拥有的Activity,因为它们可能在此期间被回收(因为其他Activity可能已被销毁在此期间。)

您需要以标准方式与其他Activity进行通信。例如,您的孩子Activity可以将结果返回给父Activity,然后它可以解释(您可以将值放到Intent)。另一个解决方案是使用一个静态变量,但这不是太好,如果你不够小心就有风险。

有关活动之间通信的详细信息,请参阅thisthis

答案 1 :(得分:0)

您将无法直接操作当前不在前台的活动的视图层次结构,因为它可能已暂停并停止,在这种情况下,其UI已被销毁,并且在其之前不会重建回到前台。您应该考虑Activity生命周期中发生的事情,以帮助您解决此问题。一个快速而肮脏的解决方案可能是托管选项卡的Activity有一个可由其他活动设置的公共静态变量;这样当它恢复在前台运行时,它可以检查该变量并根据需要使视图可见