android中的意图-黑莓
我试图弄清楚黑莓Java中“Android意图”的等价物是什么。我已经阅读了类似的问题/答案,但我无法使用它们。一个建议是制定一种方法android中的意图-黑莓,android,android-intent,blackberry,Android,Android Intent,Blackberry,我试图弄清楚黑莓Java中“Android意图”的等价物是什么。我已经阅读了类似的问题/答案,但我无法使用它们。一个建议是制定一种方法 公共类状态活动扩展主屏幕{ 字符串strResult; 字符串strsessionFirstName; 公共void setResult(字符串值){ strResult=值; } public void setFirstName(字符串值){ strsessionFirstName=值; } 这是从主类调用的,如 if(strResult.equals(“c
公共类状态活动扩展主屏幕{
字符串strResult;
字符串strsessionFirstName;
公共void setResult(字符串值){
strResult=值;
}
public void setFirstName(字符串值){
strsessionFirstName=值;
}
这是从主类调用的,如
if(strResult.equals(“credentialaccepted”))
{
StatusActivity nextScreen=新的StatusActivity();
nextScreen.setFirstName(strsessionFirstName);
但这对我不起作用。使用哈希表的另一个选项,我一直无法理解。有人能用示例代码解释一下吗?谢谢。我想你已经看过我们的?如果没有,请先阅读 背景 黑莓不使用
Intent
对象,也没有直接的等价物。在Android中,使用Intent
对象的原因不同:
活动
活动
的调用者与活动
本身分离Activity
对象的生命周期(创建/暂停/恢复/销毁),如果人们直接使用new MyActivity();
活动概念。在Android中,您有一个视图层,通常由XML布局表示,可能有一些自定义Java类扩展Android视图
类
然后,Android有一个活动
层,类似于模型-视图-控制器模式中的控制器。活动
不应该与UI紧密耦合(视图),理想情况下,它不应该包含后端数据,后端数据应该位于数据模型层中
这非常好,因为程序员可以处理模型和控制器(活动
)代码,而不懂Java的图形用户界面设计师可以处理可视化设计,完全使用XML(和布局编辑器工具)
BlackBerry没有Android的视图层。要构建BlackBerry UI,如果您使用的是本机BlackBerry Java平台和工具,则必须使用Java代码。因此,我发现较少的BlackBerry项目努力将控制器层与视图层。此外,我认为软件项目越大,模型视图控制器就越重要,相对于桌面应用程序,智能手机应用程序通常越小。因此,不管是好是坏,我认为这就是MVC没有更直接地内置到BlackBerry API中的原因
一个解决方案
因此,正如您的代码片段所暗示的,许多人将Android活动
子类中的逻辑放入BlackBerry中的屏幕
子类中。它将控制器逻辑与UI更紧密地结合在一起,但有时这是可以接受的
如果您对此感到满意,那么您通常会使用如下简单的代码启动屏幕(活动):
StatusActivity nextScreen=newstatusActivity();
nextScreen.setFirstName(strsessionFirstName);
UiApplication.getUiApplication().pushScreen(下一屏幕);
Android活动
在onCreate()中的逻辑
方法,用于检查意图
附加内容并设置视图,可以在状态活动
的构造函数中。如果某些UI初始化取决于strsessionFirstName
的值,则可以在setFirstName()方法中设置该UI:
StatusActivity.java:
private LabelField\u namelab;
public void setFirstName(字符串值){
如果(_namelab==null){
_名称标签=新标签字段(值);
add(_namelab);//将新字段添加到屏幕
}否则{
_namelab.setText(值);
}
}
或者,您可以将firstNameString
传递到StatusActivity
构造函数中,然后进行设置
另一个解决方案
我在上面链接的是为所有BlackBerry“活动”创建一个通用接口,您可以在其中使用键值对设置属性
StatusActivity.java:
private Hashtable\u extras=new Hashtable();
专用LabelField(U名称标签);
public void putExtra(字符串名称、对象值){
_额外费用(名称、价值);
}
//注意:这个方法现在是私有的,只能从这个类内部调用!
私有void setFirstName(字符串值){
如果(_namelab==null){
_名称标签=新标签字段(值);
add(_namelab);//将新字段添加到屏幕
}否则{
_namelab.setText(值);
}
}
//这将重写基类方法,并在显示屏幕时调用
附加的公共无效(布尔值附加){
super.附文(附文);
如有(附件){
String firstName=_extras.get(“first_name”);
setFirstName(firstName);
}
}
然后,您可以像这样启动StatusActivity
:
StatusActivity nextScreen=newstatusActivity();
nextScreen.putExtra(“first_name”,stressionfirstname);
UiApplication.getUiApplication().pushScreen(下一屏幕);
什么不适合您?为什么不使用Ani对象并将其传递到主屏幕中的主屏幕