2010-08-18 60 views
22

Android是否具有与Cocoa的viewDidLoad和viewDidAppear函数等效的功能?Android的viewDidLoad和viewDidAppear等价物

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

+0

一个优秀的老问题!这可能在这里有所帮助:http://stackoverflow.com/a/40789869/294884 – Fattie 2016-12-25 15:17:31

回答

11

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; 
     } 
    }); 
+0

onCreate不像viewDidLoad,因为在viewDidLoad中创建和访问来自xml/xib的所有视图,但是在onCreate中视图还无法访问。 – Jonny 2013-01-15 05:50:19

+0

我发现''findViewById''可以在'setContentView'被调用后的'onCreate'里面使用。 – Jonny 2013-01-23 06:16:58

+0

根本不是..... – Jacky 2013-05-30 09:29:05

3

于Android的我有限的,新生的理解,你实现你的ActivityonCreate方法viewDidLoad中类型的功能:

的onCreate(捆绑),在这里你 初始化活动。大多数 重要的是,在这里,你通常会 调用的setContentView(INT)与布局 资源定义你的用户界面,并使用 findViewById(int)以检索,你需要 与编程交互是UI的 部件。

viewDidAppear等效更靠近onResume方法:

后 onRestoreInstanceState(束)调用, onRestart(),或在onPause(),用于家庭的 活动启动交互与 用户。这是开始 动画的好去处,开放独占访问 设备(如摄像机)等

12

的onResume()更像是viewCouldAppear。 :)公共无效onWindowFocusChanged(布尔)是最接近viewDidAppear。在活动生命周期的这一点上,您可能会询问关于其大小的观点。