gpt4 book ai didi

Android Activity.onWindowFocusChanged 不会从 TabHost 中调用

转载 作者:太空狗 更新时间:2023-10-29 15:36:57 24 4
gpt4 key购买 nike

我一直在努力解决 .onWindowFocusChanged() 没有在我的自定义 Activity 类中被调用的问题。我的设置:

TabHost 中的两个选项卡(包含 Activity_1 和 Activity_2),默认情况下选择第 2 个选项卡:

tabHost.setCurrentTab(currentTabIndex);

在这两个 Activity 中,我都添加了 onWindowFocusChanged() 覆盖(因为我需要在布局绘制完成后进行预计算):

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
}

问题:当默认选择第二个选项卡并单击第一个选项卡时,onWindowFocusChanged() 永远不会在 Activity_1(与第一个选项卡关联)中调用。这两个 Activity 都扩展了普通的 Activity 类。

任何有关如何解决此问题的线索将不胜感激!

最佳答案

如果您需要等到绘制特定 View 然后进行计算,您可以使用 viewTreeObserver 来监听布局变化并在那里进行计算。像这样使用它:

ViewTreeObserver vto = mainLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
// remove the listener so it won't get called again if the view layout changes
mainLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
// add your calculations here
}}

编辑:

感谢 Edison 提供更多详细信息。

对于那些想要支持API <16的人,你可以这样做

if (Build.VERSION.SDK_INT >= 16) {     
mainLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
mainLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}

关于Android Activity.onWindowFocusChanged 不会从 TabHost 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11140120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com