2012-06-29 53 views
1

我有佈局更新的問題。我的方法是這樣的:在oncreat()方法中調用佈局更新失敗

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); 
    } 

當我打電話從按鈕的點擊監聽器能正常工作的方法,但是當我打電話內的方法胡亞蓉類沒什麼onCreate()方法發生。

我只是想知道也許我需要刷新佈局,但我不確定?我試圖通過執行下面的代碼來使用invalidate方法,但仍然沒有發生。

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

我將不勝感激任何意見。

提前感謝

+0

你必須在setContentView()之後調用這個方法; – Aram

+0

你是否在setContentView()之前調用? –

+0

謝謝你們,是的,我在setContentView()之後調用它:) –

回答

2

調用此從onWindowFocusChanged()。這實際上是一個活動的抽象方法,一旦你的View被繪製就會被調用。覆蓋這個到你的Activity並檢查,

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

謝謝你,這個人做的是技巧升技,但我有一些標籤,當我再次轉到其他標籤時,所有東西都變得可見。 –

+0

然後調用changeview()onResume中的方法也 –

+0

你是什麼意思,你可以請給我樣本?因爲我只使用一個標籤頁的活動。 onResume是否也檢測佈局更改? –