创建View后运行方法 - Android

时间:2013-04-30 10:23:41

标签: java android

我目前有一个创建视图的活动。此视图使用其他类(例如一个用于创建随机的整数序列)。我需要在创建视图后运行一个方法(将使用位图显示序列)。因此,一旦用户点击“开始游戏”,将显示该序列。

我已经尝试在onCreate方法中设置内容视图后调用该方法,因为序列没有正确生成(全0)。我也尝试使用myView类中的onStart和onFinishInflate。

有没有办法可以在所有内容充气和初始化后运行此方法?因此,在用户单击“开始游戏”并更改视图后,该方法需要运行。

感谢您的光临。

编辑:尝试失败。

@Override
protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  this.gameView = new GameView(getApplicationContext(), getCellSource(getApplicationContext()));
  setContentView(this.gameView);
  // this.gameView.displaySequence(this.gameView.gameEngine.getGenSequence()); Need this to run once view is displayed.
}

1 个答案:

答案 0 :(得分:9)

尝试使用ViewTreeObserver,如下所示:

final View yourView = View.inflate(....);
    ViewTreeObserver observer = yourView .getViewTreeObserver();

    observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            yourView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            // Do what you need with yourView here...

        }
    });

请注意,函数removeGlobalOnLayoutListener(this)在某些sdk版本中有所不同。