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

我试图弄清楚黑莓Java中“Android意图”的等价物是什么。我已经阅读了类似的问题/答案,但我无法使用它们。一个建议是制定一种方法

公共类状态活动扩展主屏幕{
字符串strResult;
字符串strsessionFirstName;
公共void setResult(字符串值){
strResult=值;
}
public void setFirstName(字符串值){
strsessionFirstName=值;
}
这是从主类调用的,如

if(strResult.equals(“credentialaccepted”))
{
StatusActivity nextScreen=新的StatusActivity();
nextScreen.setFirstName(strsessionFirstName);

但这对我不起作用。使用哈希表的另一个选项,我一直无法理解。有人能用示例代码解释一下吗?谢谢。

我想你已经看过我们的?如果没有,请先阅读

背景 黑莓不使用
Intent
对象,也没有直接的等价物。在Android中,使用
Intent
对象的原因不同:

  • 只需启动
    活动
  • 活动
    的调用者与
    活动
    本身分离
  • 帮助Android管理
    Activity
    对象的生命周期(创建/暂停/恢复/销毁),如果人们直接使用
    new MyActivity();
  • 所以,问题是,你问这三个原因中的哪一个(或其他什么原因)?我的第一个猜测是#1…你只是想开始活动

    首先,BlackBerry没有相同的
    活动概念。在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(值);
    }
    }
    
    或者,您可以将firstName
    String
    传递到
    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对象并将其传递到主屏幕中的主屏幕