我目前有一个创建视图的活动。此视图使用其他类(例如一个用于创建随机的整数序列)。我需要在创建视图后运行一个方法(将使用位图显示序列)。因此,一旦用户点击“开始游戏”,将显示该序列。
我已经尝试在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.
}
答案 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版本中有所不同。