【问题标题】:How to execute code after Activity creation in Android?如何在Android中创建Activity后执行代码?
【发布时间】:2014-09-08 16:25:28
【问题描述】:

我想在表单显示后立即执行一些代码。

我想检查表单上按钮的大小,并在运行时使用相同的大小创建新按钮。

我尝试了 onStart() 和 onResumed(),但它们不起作用。

谢谢, 阿肖克

【问题讨论】:

  • 我想你不是在找activity什么时候创建的,而是layout建好了。我还没有处理过这个问题,但this 似乎是一个不错的起点。
  • 你可以在上面发RunnableSee this answer

标签: java android


【解决方案1】:

您可以添加一个全局布局监听器。在 onActivityCreated 处添加监听器。 检查这个例子:

button1.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                       button1.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    } else {
                        button1.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    }
                   //here the size is already available. create new button2 here with the size of button1
                }
            });

【讨论】:

  • 今天晚些时候我会试试这个。
  • 只是想确认一下:上面的代码会只运行一次吗?即使它运行多次,我也可以管理。谢谢
  • 如果你移除监听器,代码只会运行一次。请注意用于删除侦听器的前 4 行。
  • 哦,我明白了。这很明显,但我错过了。感谢您指出。
【解决方案2】:

您正在查看 onCreate() 方法,该方法将在您的应用首次加载到内存时运行

【讨论】:

  • 还没有size等布局信息
  • 调用 setContentView(R.layout.) 后布局将可用
  • 我现在明白了。谢谢
  • @mpop 可以访问Views,但不能保证它们已被完全测量,因此很可能仅因为您致电setContentView()而无法提供尺寸class="comcopy">@mpop跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多