首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 用户界面 >> 文章正文
在symbian中实现视图间的切换
作者:佚名    文章来源:转载    更新时间:2007-12-10 8:23:40
有这样那个一个简单的程序:
有两个视图,初始化时载入第一个视图。点击菜单中的一项时,进入一个窗体进行数据的处理。处理完成后,转向第二个视图。
 
期间遇到了很多问题,在网友的帮助下一一解决了。虽然还没什么实质性的功能,但起码一个大体的流程已经搭建起来了。期间我也对symbian有了一个最初级的认识。
这里主要说一下视图之间的切换的问题。
其实这个问题很简单,如果你能找到实现方法的话。
 
首先来看一下AppUi类中初始化两个视图的代码:
void CControlsAppUi::ConstructL()
    {
    BaseConstructL();
    iView2 = CCompoundControlView::NewL();
    AddViewL(iView2); // transfer ownership
    iView1 = CSimpleControlView::NewL();
    AddViewL(iView1); // transfer ownership
       SetDefaultViewL(*iView1);
    }
这里进行了视图的初始化工作,并将第一个视图作为默认视图。
 
 
下面是其中一个视图的主要方法,包括视图的初始化、激活、命令处理
在这里主要看一下切换视图的代码,我是在命令处理方法中这样写:
void CSimpleControlView::HandleCommandL(TInt aCommand)
    {
    switch (aCommand)
       {
       casequeryMuenuItem:
           {
           //CQueryForm* queryForm = CQueryForm::NewL();
           //queryForm->ExecuteLD(R_NUMERICEDITOR_FORM_DIALOG);
           AppUi()->ActivateLocalViewL(TUid::Uid(ECompoundControlViewId));
           break;
           }
       default:
           {
           AppUi()->HandleCommandL(aCommand);
           }
       }
    }
我把无关的信息已经屏蔽掉了,这里起到视图切换的就一句:AppUi()->ActivateLocalViewL(TUid::Uid(ECompoundControlViewId));
意思应该就是激活一个视图。
主要是TUid::Uid(ECompoundControlViewId)的这种写法,和ECompoundControlViewId的值究竟是什么?
经试验确定这个值就是在方法
TUid CSimpleControlView::Id() const
    {
    return TUid::Uid(ESimpleControlViewId);
    }
中的“ESimpleControlViewId值。
这个值是在资源文件中配置的:
enum TControlsViewNumber
    {
    ECompoundControlViewId= 3,
    ESimpleControlViewId = 4
    };
 
还有,一定要写好视图的DoActivateLDoDeactivate方法,这是在视图激活和销毁时执行的。
虽然对symbian还是茫茫然的感觉,但起码写出一点东西来了,一点安慰吧。
相关文章:
没有相关文章