# Activity组件 ### Activity 声明及定义 EasyUI框架提供了类似Android的Activity组件 声明: ~~~ #include "app/Activity.h" class HelloActivity : public Activity { public: HelloActivity(); virtual ~HelloActivity(); protected: virtual const char* getAppName() const; virtual void onCreate(); virtual void onClick(ZKBase *pBase); }; ~~~ 定义: ~~~ #include "HelloActivity.h" /* 注册Activity */ REGISTER_ACTIVITY(HelloActivity); HelloActivity::HelloActivity() { } HelloActivity::~HelloActivity() { } const char* HelloActivity::getAppName() const { return "hello.ftu"; // 返回启动界面配置文件 } void HelloActivity::onCreate() { Activity::onCreate(); } void HelloActivity::onClick(ZKBase *pBase) { Activity::onClick(pBase); } ~~~ 不能通过new HelloActivity的方式启动界面,必需通过以下方式启动界面: ~~~ EASYUICONTEXT->openActivity("HelloActivity"); ~~~ 如果是作为首个启动界面,可以直接在onStartupApp回调中返回该Activity名称: ~~~ const char* onStartupApp(EasyUIContext *pContext) { return "HelloActivity"; } ~~~ 界面与界面间的信息传递,可通过对openActivity第二个参数进行传参: ~~~ Intent *pIntent = new Intent(); pIntent->putExtra("cmd", "open"); pIntent->putExtra("value", "ok"); EASYUICONTEXT->openActivity("SubActivity", pIntent); ~~~ 这样在SubActivity的onIntent回调中就可以接收得到: ~~~ void SubActivity::onIntent(const Intent *intentPtr) { if (intentPtr) { // 键值解析 } } ~~~ 注意: 1、new出来的Intent不需要手动delete,由框架内部自动delete; 2、putExtra只提供了string的键值对方式,如需传递int或其他类型的值,需转成string类型,在onIntent中收到后再做相应的转换 返回到上一界面: ~~~ EASYUICONTEXT->goBack(); ~~~ 在当前Activity的onBack方法中可以监听到该事件: ~~~ virtual bool onBack(); bool HelloActivity::onBack() { // 返回true将退出当前界面,返回false将不会退出当前界面 return true; } ~~~ 返回到主界面: ~~~ EASYUICONTEXT->goHome(); ~~~ ### Activity 生命周期 ![](https://box.kancloud.cn/6dfb14805dc20f0264a37d76d19fcd23_265x398.png =160x260) 注意: onCreate回调之后才可以对控件进行操作,findControlByID才可以找到对应ID的控件对象