Android:创建活动接口后调用的方法

Android:创建活动接口后调用的方法,android,android-activity,Android,Android Activity,我想在创建活动的图形界面后执行一些任务。我需要知道某些视图的确切高度和宽度,并根据宽度和高度更改某些视图的布局参数。在onResume方法中,视图的所有参数仍然等于0 至于现在,我正在使用一个延迟的任务,它在onCreate中运行了一段时间,但这根本不是一个好的解决方案 活动创建中最后调用的方法是什么?视图的宽度和高度在这种方法中可用吗?onResume()是最后一个,但onViewCreated()可能更好。它的优点是,它不会在您每次重新获得焦点时调用。但是,请尝试在布局元素上的post()内

我想在创建活动的图形界面后执行一些任务。我需要知道某些视图的确切高度和宽度,并根据宽度和高度更改某些视图的布局参数。在
onResume
方法中,视图的所有参数仍然等于0

至于现在,我正在使用一个延迟的任务,它在
onCreate
中运行了一段时间,但这根本不是一个好的解决方案

活动创建中最后调用的方法是什么?视图的宽度和高度在这种方法中可用吗?

onResume()是最后一个,但onViewCreated()可能更好。它的优点是,它不会在您每次重新获得焦点时调用。但是,请尝试在布局元素上的post()内部获取视图的属性。例如:

        textView.post(new Runnable() {
            @Override
            public void run() {
                 // do something with textView
            }
        });

活动启动时运行的最后一个方法是
onResume()
。 您可以在找到它。


如果这对您来说还不够好,那么从这个
onResume()
运行延迟任务,您就会没事了。

在onResume()方法的最后一行,获取您想要的所有数据。它应该显示您需要的所有内容。

在onCreate()中调用它


谢谢,我两个都试试!但是为什么在您看来第二个比第一个好呢?不,您应该在onViewCreated中使用我的代码。之所以需要post(),是因为“此时片段的视图层次结构没有附加到其父级。”如果仍然没有返回正确的结果,则使用postdayed()。它很脏,但很简单,而且可以工作。这里您也遇到了同样的问题:它不完全相同,因为我需要根据其他视图的参数修改某些视图的布局,这些视图甚至不在同一布局中。这里没有名为onViewCreated()的方法。有onCreateView(),但它是在视图膨胀之前而不是之后调用的。
       final View rootView = getWindow().getDecorView().getRootView();
        rootView.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {

                    @Override
                    public void onGlobalLayout() {

                        //by now all views will be displayed with correct values

                    }
                });