我有一个带有TabHost和三个标签的应用。他是我如何创建每个标签的一个例子:
intent = new Intent().setClass(this, Setup.class); //intent.getClass()
spec = tabHost.newTabSpec("setup").setIndicator("",
res.getDrawable(R.drawable.tab_setup))
.setContent(intent);
tabHost.addTab(spec);
我的目标是,当您切换到新标签时,调用方法更新该标签上显示的信息。
以下是问题:标签如何知道它已被显示?
答案 0 :(得分:7)
由于Activity
中的每个标签都使用了TabHost
,因此您应该使用Android lifecycle调用来更新用户界面上的信息。
onResume
Activity
(然后在最后一个标签的活动中调用onPause
)。这将使您的代码保持在适当的位置,以防您决定使用其他UI来托管这些活动。
@Override
public void onResume() {
super.onResume();
// Update your UI here.
}
答案 1 :(得分:0)
使用所需的代码覆盖活动类中的OnTabChangeListener。
答案 2 :(得分:0)
onTabChangeListener可以正常工作(如果没有,则单击相同的选项卡),它将不会被调用,不确定这对您的应用程序是否重要。
如果您想要所有事件而不仅仅是更改,我想您可以捕获tab click event。我认为第二个提出的解决方案无法正常工作的原因是它们并没有调用super.onClick(事件)。
答案 3 :(得分:0)
我认为使用选项卡的目的是在第一次单击时加载选项卡,然后保持静态,直到用户发出刷新命令。我会在菜单中使用一个新按钮。
但是如果你每次点击它都需要更新标签,那么为什么不只是使用几个简单的按钮呢?点击它们后,您可以轻松交换内容区域。