Android有没有类似于Cocoa的viewDidLoad和viewDidAppear函数的等效函数?
如果没有,那么我该如何在View出现时执行操作?我的应用程序是一个分栏应用程序,其中一个选项卡是论坛主题列表。我想每次View出现时刷新主题列表。在Android中是否可能实现这样的功能?
Android有没有类似于Cocoa的viewDidLoad和viewDidAppear函数的等效函数?
如果没有,那么我该如何在View出现时执行操作?我的应用程序是一个分栏应用程序,其中一个选项卡是论坛主题列表。我想每次View出现时刷新主题列表。在Android中是否可能实现这样的功能?
Activity类有onCreate和onResume方法,它们与viewDidLoad和viewDidAppear非常相似。
编辑
补充一下,因为一些评论中提到这些回调期间视图树尚未完全可用,因此您可以监听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;
}
});
setContentView
之后,可以在onCreate
中使用findViewById
。 - JonnyonResume() 更像是 viewCouldAppear :) public void onWindowFocusChanged(boolean) 是最接近 viewDidAppear 的方法。在此阶段,您可以查询视图的大小。
根据我有限的对Android的了解,您可以在Activity的onCreate方法中实现viewDidLoad类型的功能:
onCreate(Bundle)是您初始化活动的地方。最重要的是,在此处通常会使用定义UI的布局资源调用setContentView(int),并使用findViewById(int)检索需要以编程方式与之交互的UI中的小部件。
viewDidAppear的等效方法更接近于onResume方法:
在onRestoreInstanceState(Bundle)、onRestart()或onPause()之后调用,以便您的活动开始与用户进行交互。这是一个很好的地方开始动画,打开独占访问设备(如相机)等。