在活动完全布局并准备好用户交互的那一刻,哪个方法被调用?

我需要一种方式来在完全加载,布局,绘制并准备好用户的触摸控制的时刻运行一些代码。 哪一种方法/听众这样做?

Solutions Collecting From Web of "在活动完全布局并准备好用户交互的那一刻,哪个方法被调用?"

Commonsware是正确的,没有解释你正在做什么,为什么,这是不可能回答你的问题,我怀疑,详细的,你可能在想这是错误的方式。

但是,我确实有一些代码,在测量完所有东西之后,我需要做一些非常有趣的布局。

我可以在布局中扩展每个视图类,并覆盖onMeasure()但这将是很多工作。 所以,我最终这样做了。 不是很好,但它的工作原理。

mainMenuLayout是我需要时髦的布局。 当布局完成绘图时,将调用onGlobalLayoutcallback。 Utils.setTitleText()是funkiness发生的地方,当我将mainMenuLayout传递给它时,它可以访问所有子视图的位置和大小。

 mainMenuLayout.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // only want to do this once mainMenuLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); // set the menu title, the empty string check prevents sub-classes // from blanking out the title - which they shouldn't but belt and braces! if (!titleText.equals("")){ Utils.setTitleText(_context,mainMenuLayout,titleText); } } }); 

我发现,如果我将Runnable到消息队列中,它将在绘制完活动的内容之后运行。 例如,如果我想要一个View的宽度和高度,我会这样做:

 view.post( new Runnable() { @Override public void run() { int width = view.getWidth(); // will be non-zero int height = view.getHeight(); // will be non-zero } } ); 

在我调用setContentView()之后,我随时都发现了这个成功。

onRestoreInstanceState方法是一个被调用来恢复在onResume之后调用的UI状态。我认为你可以使用这个onRestoreInstanceState方法..并把你的代码从savedInstanceState恢复UI状态…

onResume()之后调用onPostResume() ,此时Activity实例应该是可见的,并且所有基础视图都被渲染。 在许多情况下,当onResume()也被调用时,这也是正确的。

也许这没有什么帮助:

 @Override public void onAttachedToWindow(){}