【问题标题】: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,你真的可以选择你想要的。