如何在激活某个View时把简单对象(T类)做为参数进行传递
来源:互联网 发布:小说分销平台源码 编辑:程序博客网 时间:2024/04/25 19:26
下面是我从Nokia公司论坛上找到的关于视图间传递比较多的参数时的解决方法的文章,介绍的不错,贴在这里,方便需要之人使用。
文章地址:http://wiki.forum.nokia.com/index.php/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%BF%80%E6%B4%BB%E6%9F%90%E4%B8%AAView%E6%97%B6%E6%8A%8A%E7%AE%80%E5%8D%95%E5%AF%B9%E8%B1%A1%28T%E7%B1%BB%29%E5%81%9A%E4%B8%BA%E5%8F%82%E6%95%B0%E8%BF%9B%E8%A1%8C%E4%BC%A0%E9%80%92
如何在激活某个View时把简单对象(T类)做为参数进行传递
在使用Series 60 Multi-View架构时我们经常需要在view间传递数据, Multi-View架构提供了CAknViewAppUi::ActivateLocalViewL(TUid aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage)函数用于在激活某个view时传入相应的参数。我们可以通过实现view类的DoActivateL( const TVwsViewId& aPrevViewId,TUid aCustomMessageId, const TDesC8& aCustomMessage )来进行参数的处理。
通过观察上面这两个函数发现我们可以利用aCustomMessageId和aCustomMessage来进行直接进行整数型和8位描述符的传递,但如果我们要在view间传递的参数有很多,这时怎么办?我们可能会想到把多个参数按一定顺序格式化到aCustomMessage中,然后在接收方进行解析。这种方法会产生一个问题:当参数增加或减少时对参数组织和解析都会增加负担。其时Symbian提供了TPckgBuf这个类来进行打包工作,通过它我们可以把一个简单对象(通常是T类)包装到8位描述符的buffer中。下面的代码演示了如何利用TPckgBuf在view间传递简单对象:
//Parameter class
class TViewPara
{
public:
TInt32iId;
TBuf<32>iCode;
TBuf<8>iStatus;
TTimeiDate;
};
传递参数:
_LIT( KCode, “1021568” );
_LIT( KStatus, “N” );
TViewPara info;
info.iId = 300125;
info.iCode.Copy( KCode );
info.iStatus.Copy( KStatus );
info.iDate.HomeTime();
TPckgBuf< TViewPara > package(info);
TBuf8<128> para;//要根据TViewPara所占的内存空间准备足够的buffer
para.Copy( package );
ui->ActivateLocalViewL( TUid::Uid( EBrowserViewId ), TUid::Uid( 0 ), para );
解析参数:
void CBrowserView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,TUid aCustomMessageId,
const TDesC8& aCustomMessage )
{
if( aCustomMessage.Length() )
{
TViewPara info;
TPckgBuf< TViewPara > package( info );
package.Copy( aCustomMessage );
iInfo = package();//iInfo是TViewPara类型的数据成员
}
//Other operation
……………………………
}
备注:
为了示例简单明了并没有通过aCustomMessageId进行防御性编码。
上面的代码在基于Series60 3rd的设备上进行了测试,TViewPara中的成员直接使用中文也是正常的。
- 如何在激活某个View时把简单对象(T类)做为参数进行传递
- 如何在激活某个View时把简单对象(T类)做为参数进行传递
- 如何在激活某个View时把简单对象(T类)做为参数进行传递
- 如何在两个COM对象之间进行参数传递
- CComPtr对象作为参数进行 1.值传递 2.引用传递 3.做为返回值的注意事项
- 指针做为参数传递
- jquery autocomplete自动补全 jsp调用后台Java程序,如何把el表达式做为参数传递_读书人
- 对Bean进行操作以用于把入参对象解析成Map参数传递到Mybatis的工具类
- 用数组做为参数传递
- 将引用做为传递参数
- 在url中进行中文参数传递如何转换
- C#函数 把 对象作为参数传递
- 如何把类函数做为回调函数.--提出问题
- PB 如何把结构作为参数传递
- 把建立的对象做为另外一个函数的参数带入调用
- IPHONE开发 在VIEW之间传递参数
- Android Parceable的简单用法,如何传递List<T>和对象,中间写入数组
- 数组做为参数传递给函数
- 电脑故障处理小经验—IE无法打开链接的处理方法
- 北京工资扣税算法
- 掌握 Linux 调试技术
- Windows 到 Linux 代码移植的常见问题
- Linux 系统内核的调试
- 如何在激活某个View时把简单对象(T类)做为参数进行传递
- 15天学会jQuery
- 开始写代码STEP_4
- 必须掌握的八个DOS命令!-----摘自天涯恨客的博客
- Writing a Linux device driver
- 最近要学习的:
- UNIX 高手的 10 个习惯
- 关于ssh端口转发的深入实例
- 读--龙应台:在“仰德大道”上