dub*_*ugh 2 android overriding android-tabhost android-activity
我正在努力解决在我的自定义Activity类中没有调用.onWindowFocusChanged()的问题.我的设置:
TabHost中的两个选项卡(包含Activity_1和Activity_2),默认情况下选择第二个选项卡:
tabHost.setCurrentTab(currentTabIndex);
Run Code Online (Sandbox Code Playgroud)
在这两个活动中,我添加了onWindowFocusChanged()覆盖(因为我需要在布局完成绘图后预先形成计算):
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
}
Run Code Online (Sandbox Code Playgroud)
问题:默认情况下选择第二个选项卡,然后单击第一个选项卡,onWindowFocusChanged()永远不会在Activity_1中调用(与第一个选项卡关联).两个活动都扩展了普通的Activity类.
如何解决这个问题的任何线索将不胜感激!
Cat*_*ata 12
如果您需要等到绘制特定视图然后进行计算,您可以使用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
}}
Run Code Online (Sandbox Code Playgroud)
编辑:
感谢Edison的进一步细节.
对于那些想要支持API <16的人,你可以做到
if (Build.VERSION.SDK_INT >= 16) {
mainLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
mainLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4326 次 |
| 最近记录: |