Android:viewTreeObserver侦听器从未被调用

Android:viewTreeObserver侦听器从未被调用,android,kotlin,Android,Kotlin,我想使用viewTreeObserver,这样我就可以在布局加载完成后收听,然后获取该布局中某些视图的坐标。我听从了这里的建议: 我将代码翻译成Kotlin,但是侦听器中的函数从未被调用。 我的代码非常简单: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)

我想使用viewTreeObserver,这样我就可以在布局加载完成后收听,然后获取该布局中某些视图的坐标。我听从了这里的建议:

我将代码翻译成Kotlin,但是侦听器中的函数从未被调用。 我的代码非常简单:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val layoutInflater: LayoutInflater = LayoutInflater.from(applicationContext)
        val view: View = layoutInflater.inflate(R.layout.activity_main, null)

        view.viewTreeObserver.addOnGlobalLayoutListener(object: ViewTreeObserver.OnGlobalLayoutListener {
            override fun onGlobalLayout() {
                Log.d("TAG", "Called!!!")
            }
        })

       setContentView(R.layout.activity_main)

充气并从中获取viewTreeObserver的视图永远不会添加到层次结构中。所以这个观察者从不调用任何事件

当您调用
setContentView(R.layout.activity\u main)
时,一个从未添加侦听器的新视图被膨胀


您可以使用
setContentView(view)

充气并从中获取viewTreeObserver的视图永远不会添加到层次结构中。所以这个观察者从不调用任何事件

当您调用
setContentView(R.layout.activity\u main)
时,一个从未添加侦听器的新视图被膨胀


您可以使用
setContentView(view)

哦,很抱歉,布局是空的,尽管视图对象本应使用布局充气,但为什么它是空的?谢谢,我不确定。我现在注意到的一点是,您使用了LayoutInflater.from(applicationContext),而您不想在这里使用应用程序上下文,因为它应该知道活动。所以把它改成更平的。如果不起作用,请确保activity_main.xml是正确的,检查LogCat是否有警告和错误,或者在视图膨胀后放置断点,检查它是否具有所有正确的子项等等。是的,现在它可以工作了。谢谢Rob,老实说,我不理解applicationContext与此之间的区别,但是我会进一步研究的,非常感谢!哦,很抱歉,但是布局是空的,尽管视图对象应该使用布局进行膨胀,但为什么它是空的?谢谢,我不确定。我现在注意到的一点是,您使用了LayoutInflater.from(applicationContext),而您不想在这里使用应用程序上下文,因为它应该知道活动。所以把它改成更平的。如果不起作用,请确保activity_main.xml是正确的,检查LogCat是否有警告和错误,或者在视图膨胀后放置断点,检查它是否具有所有正确的子项等等。是的,现在它可以工作了。谢谢Rob,老实说,我不理解applicationContext与此之间的区别,但是我会进一步研究的,非常感谢!