34

Android 是否有等效于 Cocoa 的 viewDidLoad 和 viewDidAppear 函数?

如果没有,那么当视图出现时我将如何执行操作?我的应用程序是一个选项卡式应用程序,其中一个选项卡是论坛主题列表。我希望每次出现视图时都刷新主题列表。这样的事情在Android中可能吗?

4

3 回答 3

24

Activity 类具有非常类似于 viewDidLoad 和 viewDidAppear 的 onCreate 和 onResume 方法。

Activity.onResume

编辑

除此之外,由于有些人在评论中提到在这些回调期间视图树尚未完全可用,因此如果您需要首先访问视图层次结构,您可以收听 ViewTreeObserver。以下是如何使用 ViewTreeObserver 来实现此目的的示例。

    View someView = findViewById(R.id.someView);
    final ViewTreeObserver obs = someView.getViewTreeObserver();
    obs.addOnPreDrawListener(new OnPreDrawListener() {

        public boolean onPreDraw() {
            obs.removeOnPreDrawListener(this);
            doMyCustomLogic();
            return true;
        }
    });
于 2010-08-18T15:10:53.400 回答
18

onResume() 更像是 viewCouldAppear。:) public void onWindowFocusChanged(boolean) 是最接近 viewDidAppear 的。在活动生命周期中的这一点上,您可能会询问视图的大小。

于 2012-04-10T14:50:35.093 回答
4

根据我对 Android 的有限的初步了解,您可以在Activity的onCreate方法中实现viewDidLoad类型功能:

onCreate(Bundle) 是您初始化活动的地方。最重要的是,在这里您通常会使用定义 UI 的布局资源调用 setContentView(int),并使用 findViewById(int) 检索该 UI 中需要以编程方式与之交互的小部件。

viewDidAppear的等价物更接近onResume方法:

在 onRestoreInstanceState(Bundle)、onRestart() 或 onPause() 之后调用,以便您的活动开始与用户交互。这是开始动画、打开独占访问设备(例如相机)等的好地方。

于 2010-08-18T15:10:55.853 回答