1

我对布局更新有疑问。我有这样的方法:

public  void changeview(){
    tabHost.getTabWidget().getChildAt(1).setVisibility(View.GONE);
    tabHost.getTabWidget().getChildAt(2).setVisibility(View.GONE);
    tabHost.getTabWidget().getChildAt(3).setVisibility(View.VISIBLE);
    tabHost.getTabWidget().getChildAt(0).setVisibility(View.VISIBLE);

    try{
        periodicCheck.setVisibility(View.GONE);
        periodiCheckText.setVisibility(View.GONE);
        MessageDelayText.setVisibility(View.GONE);
    }catch (Exception e) {
        throw new Error("set visibility failed: "+e);
    }

当我从 button 的单击侦听器调用该方法时,它可以正常工作,但是当我在 Acitivity 类的 oncreate() 方法中调用该方法时,什么也没有发生。

我只是想知道也许我需要刷新布局但我不确定?我试图通过实现以下代码来使用无效方法,但仍然没有发生任何事情。

ViewGroup vg = (ViewGroup) findViewById (R.id.main);
vg.invalidate();

我将不胜感激任何建议。

提前谢谢了

4

1 回答 1

2

onWindowFocusChanged()调用它。这实际上是 Activity 的一个抽象方法,一旦你的 View 被绘制就会被调用。将此覆盖到您的活动并检查,

@Override
public void onWindowFocusChanged(boolean hasFocus) {
changeview();
super.onWindowFocusChanged(hasFocus);
}
于 2012-06-29T11:22:07.203 回答