【问题标题】:Take action after activity setup is complete活动设置完成后采取行动
【发布时间】:2015-01-30 12:24:27
【问题描述】:

我想在活动完成设置后采取行动。 我需要的不仅仅是在活动中的所有其他内容之后简单地编写代码,因为需要做一些显示措施,并且只有在活动完全设置后才需要计算/

我尝试过使用

final ViewTreeObserver observer = mainLayout.getViewTreeObserver();
    observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
           //whatever I want to do...
}
});

这确实有效,但它让我的应用程序崩溃了

` `"01-30 14:21:55.615: A/libc(4867): Fatal signal 11 (SIGSEGV) at 0x00022588 (code=1), thread 4867 (m.fgdvir.ezlist)" 

在错误日志中

请帮忙! 谢谢

【问题讨论】:

标签: android android-activity activity-lifecycle


【解决方案1】:

您可以将代码放在onResume() 中,一旦设置好 UI 并且用户能够与之交互,该代码就会回调到您的 Activity。

@Override
public void onResume() {
   super.onResume();
   // ... code goes here
}

【讨论】:

    【解决方案2】:

    好吧,经过一番挖掘,我注意到我的解决方案是正确的(不确定是否是最好的方法,但它对我有用),但我缺少一件事 - 在调用 onGlobalLayouLtListener我需要删除听者。所以我使用的代码如下:

    final ViewTreeObserver observer = view.getViewTreeObserver();
            observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    
                @Override
                public void onGlobalLayout() {
                    view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    //The things I need to be done after activity setup is finished.
    
                }
    
            });
    

    顺便说一句 - 我注意到 id 真的不知道活动中的哪个视图,我附加到 OnGlobalLayoutListener,你真的可以选择你想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多