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

ボタンのクリックリスナーからメソッドを呼び出すと正常に機能しますが、Acitivityクラスのoncreate()メソッド内でメソッドを呼び出すと何も起こりません。

レイアウトを更新する必要があるのではないかと思っていますが、よくわかりません。次のコードを実装してinvalidatemthodを使用しようとしましたが、それでも問題は発生しません。

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

それについて何かアドバイスをいただければ幸いです。

よろしくお願いします

4

1 に答える 1

2

onWindowFocusChanged()からこれを呼び出します。これは実際には、ビューが描画されると呼び出されるアクティビティの抽象的なメソッドです。これをアクティビティに上書きして確認し、

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