Symbian 学习之不同应用程序的视图切换
2010-03-19 15:49:00 来源:WEB开发网1.在不同应用程序之间切换视图时,需要知道目标应用程序的UID和视图UID。本小节通过一个MySwitchTest示例程序演示如何在不同应用程序之间进行视图切换。在MyListView.h中加入代码如下:
// UID of view
const TUid KViewId = {1};
const TUid KCustomMessageUid = {1};
修改CMySwitchTestAppUi类的HandleCommandL()函数,使得接收到菜单命令时,切换到本章的MymultiView示例程序中的ListView视图。CSwitchTestAppui的HandleCommandL()函数的关键代码如下:
void CMySwitchTestAppUi::HandleCommandL(TInt aCommand)
{
switch ( aCommand )
{
case EAknSoftkeyBack:
case EEikCmdExit:
{
Exit();
break;
}
case EMySwitchTestCmdAppTest:
{
iEikonEnv->InfoMsg(_L("test"));
TVwsViewId listView (KUidMyMultiView, KUidListView);
// 消息数据的构造
TBuf8<1> buf;
buf.Append(3);
//切换到ListView视图。(不传递数据的切换方式,这里不使用)
//ActivateViewL(listView);
//切换到ListView视图,并设置列表的缺省选项
ActivateViewL(listView,KCustomMessageUid,buf);
break;
}
2.在视图切换过程中传递数据
一些复杂视图在创建的时候常常需要初始化参数,在视图切换过程中,这些参数可以通过ActivateViewL()函数传递。参考系统头文件 coeaui.h中CCoeAppUi类的定义:
class CCoeAppUi:public CCoeAppUiBase
{
.....
public:
void ActivateVIewL(const TVwsViewId& aViewId);
void ActivateViewL(const TVwsViewId& aViewId,TUid aCustomMessageId,
const TDesC8& aCustomMessage);
...
}
第二个ActivateViewL()函数可以再切换视图的时候传递数据,该函数的参数包括如下内容。
TVwsViewId& aViewId:与另一个ActivateViewL()函数定义的参数相同,用来标识视图。
TUid aCustomMessageId:消息UID,由目标视图定义并发布。
更多精彩
赞助商链接