黑莓:选择列表中的项目,返回上一屏幕

2024-01-12

我为我的问题准备了一个非常简短的测试用例(如下)。

单击按钮时,我想在新屏幕中显示字符串列表。

用户选择列表中的一项后,应再次显示上一屏幕,并且按钮标签应设置为所选字符串。

我的两个问题是:

  1. 从菜单内部我不知道如何弹出当前显示的屏幕
  2. 如何将所选项目从一个屏幕传递到另一个屏幕(假设我不想在前一个屏幕上引入公共变量/方法作为解决方法)

请建议我进行必要的更改src\mypackage\MyList.java:

package mypackage;

import java.util.*;
import net.rim.device.api.collection.*;
import net.rim.device.api.collection.util.*; 
import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.decor.*;
import net.rim.device.api.util.*;
import net.rim.device.internal.i18n.*;

public class MyList extends UiApplication implements FieldChangeListener {
    MyScreen myScreen = new MyScreen();

    public static void main(String args[]) {
        MyList app = new MyList();
        app.enterEventDispatcher();
    }

    public MyList() {
        MainScreen titleScreen = new MainScreen();
        titleScreen.setTitle("Click the button:");

        // TODO change the label of this button (see below)
        ButtonField myButton = new ButtonField("Show the list", ButtonField.CONSUME_CLICK);
        myButton.setChangeListener(this);
        titleScreen.add(myButton);

        pushScreen(titleScreen);
    }

    public void fieldChanged(Field field, int context) {
        pushScreen(myScreen);
    }
} 

class MyScreen extends MainScreen {
    ObjectListField myList = new ObjectListField();

    public MyScreen() {
        setTitle("Select an item below:");

        myList.set(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", }); 
        add(myList);

        addMenuItem(myMenu);
    }

    private final MenuItem myMenu = new MenuItem("Select item", 0, 0) {
        public void run() { 
            int index = myList.getSelectedIndex();
            if (index < 0)
                return;

            String item = (String) myList.get(myList, index);
            Status.show("Selected: " + item);

            // TODO how to return to the previous screen here?
            // TODO how to call myButton.setLabel(item) here?
        }
    };
}

谢谢你! 亚历克斯


使用回调模式:

class TitleScreen extends MainScreen {

    private ButtonField myButton;

    public TitleScreen() {
        super();
        setTitle("Click the button:");

        // TODO change the label of this button (see below)
        myButton = new ButtonField("Show the list", ButtonField.CONSUME_CLICK);
        myButton.setChangeListener(new FieldChangeListener() {
            public void fieldChanged(Field field, int context) {
                OnItemSelectedCallback callback = 
                        new OnItemSelectedCallback() {
                    public void onItemSelected(String label) {
                         TitleScreen.this.onItemSelected(label);
                    }
                };
                MyScreen myScreen = new MyScreen(callback);
                UiApplication.getUiApplication().pushScreen(myScreen);
            }
        });
        add(myButton);
    }

    private void onItemSelected(String label) {
        // this will be called when a menu item is executed on the MyScreen
        // e.g. you can call smth like: myButton.setLabel(label);
    }
}

interface OnItemSelectedCallback {
    void onItemSelected(String label);
}

class MyScreen extends MainScreen {
    ObjectListField myList = new ObjectListField();

    private final OnItemSelectedCallback onItemSelectedCallback;

    public MyScreen(OnItemSelectedCallback onItemSelectedCallback) {
        setTitle("Select an item below:");

        this.onItemSelectedCallback = onItemSelectedCallback;

        myList.set(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", }); 
        add(myList);

        addMenuItem(myMenu);
    }

    private final MenuItem myMenu = new MenuItem("Select item", 0, 0) {
        public void run() { 
            int index = myList.getSelectedIndex();
            if (index < 0)
                return;

            String item = (String) myList.get(myList, index);
            Status.show("Selected: " + item);

            // TODO how to return to the previous screen here?
            // TODO how to call myButton.setLabel(item) here?

            // notify the parent screen
            onItemSelectedCallback.onItemSelected(item);

            // close the current screen
            UiApplication.getUiApplication().popScreen(MyScreen.this);
        }
    };
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

黑莓:选择列表中的项目,返回上一屏幕 的相关文章

  • 如何使用 Bitmap.getBitmapResource() 访问存储在 Blackberry 中的图像?

    我想访问存储在黑莓中的图像 例如位置 store home user image png 现在我可以访问这个图像 String filePath file store home user image png Bitmap image Bit
  • 黑莓模拟器不会从 eclipse 加载 cod 文件

    我已经安装了 eclipse 和适当的黑莓插件等 我可以很好地构建项目 当我尝试使用模拟器进行调试时 cod 文件被放入模拟器的目录中并且模拟器启动 但我找不到该应用程序 它不在下载目录中或我能看到的其他任何地方 你如何告诉 fledge
  • 如何处理 Blackberry Storm 中的 ButtonField 和 BitmapField 点击(触摸)事件?

    我创建了一个 ButtonField 和一个 BitmapField 像 public class MyCanvas extends MainScreen implements FieldChangeListener HorizontalF
  • 具有固定大小的 Blackberry VerticalFieldManager:滚动问题

    我试图拥有一个带有修复标题 带有某些字段的管理器 和可滚动内容 自定义字段列表 的全屏用户界面 这个想法是模拟一种可滚动列表 为此 我制作了一个接受 maxHeight 屏幕高度 标题高度 的自定义 VerticalFieldManager
  • 如何让 Swing 应用程序感知屏幕尺寸变化?

    当我的 swing 应用程序运行时 我更改屏幕尺寸 例如从 1024x768 更改为 800x600 我可以收听任何活动以获得有关此事件的通知吗 或者 我可以每隔几秒检查一次屏幕尺寸 但 Toolkit getScreenSize 不断告诉
  • 收到 Facebook 错误 11

    我在用 Eclipse 中的 BBplugin 5 0 版和 FB jar 库 FacebookBlackBerrySDK v0 8 25 jar 我收到一个错误 API错误代码 11 API 错误描述 此方法已弃用 错误消息 Displa
  • 在 Blackberry 开发中检查电池状态

    我正在为 8900 9000 Blackberry 开发应用程序 在我的应用程序中 我需要检查电池是否连接到充电器 特别是车载充电器 我使用以下方法检查电池是否正在充电 if DeviceInfo getBatteryStatus Devi
  • 如何使用PHP获取用户的屏幕分辨率[重复]

    这个问题在这里已经有答案了 可能的重复 使用PHP获取屏幕分辨率 https stackoverflow com questions 1504459 getting the screen resolution using php 这个问题是
  • 添加始终显示在屏幕底部的页脚?

    即使页面内容非常小 如何添加始终位于屏幕底部的页脚 例如 假设我有一个页面没有显示太多内容 因此页脚位于屏幕中间 我能否确保如果页面内容不多 则页脚位于屏幕底部 UPDATE 我只想要一个位于屏幕底部的页脚 当没有足够的内容来填充整个屏幕时
  • Android针对不同屏幕应用样式

    我有一个应用程序 需要在两个不同的设备上运行 600x1024 480x800 对于这些设备 我想应用不同的样式 它们具有不同的比例 我该怎么做 因为它们都有 hdpi values hdpi values mdpi没有效果 P S And
  • 从黑莓中的url获取数据

    我有一个文件的网址 http www example com 123 aes 它包含超过2MB的mp3文件的数据 现在我想从这个网址获取数据 当我尝试 http 连接来获取数据时 它显示错误 请求的实体太大 如何解决这个问题呢 我的代码如下
  • Xcode 4.5 背景图像 iPhone 4、4s、5

    我在 viewController m 中编写了后台代码 self view backgroundColor UIColor colorWithPatternImage UIImage imageNamed image png 我有不同图片
  • ruby中如何获取屏幕分辨率

    如何在ruby脚本中获取屏幕分辨率 高度 宽度 在 Linux 上 x y xrandr scan current d x d flatten 在 Windows 上 使用WIN32OLE等 http www ruby forum com
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 黑莓 Facebook SDK jar 文件

    大家好 我在使用 Facebook Blackberry SDK 以及如何在我的项目中使用它时遇到问题 我有一个使用 SourceForge 上提供的源文件制作的项目 我在我正在开发的项目中引用了这个项目 非常适合编程 但是当我想在模拟器上
  • BlackBerry - 具有全球范围的 KeyListener

    我是 BlackBerry 应用程序开发新手 我希望能够在 BlackBerry 我的例子中是 8900 打开并且在所有屏幕上监听按键事件 这可能吗 如果是这样 那么有人引导我走向正确的方向就太好了 我已经在查看 Interface Key
  • Blackberry - 自动滚动垂直字段管理器

    如何以编程方式沿特定方向滚动屏幕而不改变焦点 例如 当我们向下滚动到 FaceBook 应用程序中的 Feed 时 它会自动滚动屏幕以适合屏幕中央的所有文本 这可以在 Blackberry Java 开发中完成吗 谢谢 阿夫扎尔 如果出现以
  • 处理具有不同缩放/分辨率的所有 iPhone 中的 UI [重复]

    这个问题在这里已经有答案了 在 iOS 中处理 iPhone 4 iPhone 5 iPhone 6 iPhone 6 UI 屏幕的最佳方法是什么 iPhone 6 的尺寸 3 倍缩放 坐标空间 414 x 736 像素 iPhone 6
  • 黑莓 - 可以隐藏视频字段吗?

    我想编写一个像手电筒这样的应用程序 在相机 LED 的帮助下 Player player javax microedition media Manager createPlayer capture video encoding video
  • 简单的 C# 屏幕共享应用程序

    我希望用 C 创建一个非常基本的屏幕共享应用程序 无需远程控制 我只希望用户能够将他们的屏幕广播到网络服务器 我应该如何实施这个 任何指向正确方向的指针将不胜感激 它不需要很高的 FPS 甚至更新 5 秒左右就足够了 您认为每隔 5 秒上传

随机推荐

  • 如何将数据框列转换为序列

    我有一个数据框如下 LABEL TERM 4 inhibitori effect 4 novel therapeut 4 antiinflammator 4 promis approach 4 cell function 4 cell li
  • 使用 Capistrano 3 部署 Rails 应用程序时跳过数据库迁移

    当我们跑步时cap deploy 它在部署期间运行所有迁移 我们必须将应用程序指向现有数据库 并且不想修改现有数据库 有人可以建议我们如何在部署应用程序时跳过迁移步骤吗 我想你正在使用卡皮斯特拉诺 Rails https github co
  • 使用 Node 或 Express 返回 JSON 的正确方法

    因此 我们可以尝试获取以下 JSON 对象 curl i X GET http echo jsontest com key value anotherKey anotherValue HTTP 1 1 200 OK Access Contr
  • Vue 3:为什么我的可组合项不是响应式的?

    我想在另一个可组合项中使用一个可组合项 我的第一个可组合项基本上是 Vuex 的超轻量级版本 import reactive readonly from vue const state reactive settings loading t
  • 在Python中使用“for”计算索引

    我需要在Python中做同样的事情 for i 0 i lt 5 i cout lt lt i 但我不知道如何在Python中使用FOR来获取列表中元素的索引 如果您有一些给定的列表 并且想要迭代其项目and索引 您可以使用enumerat
  • 捕获与量词正则表达式匹配的组

    我是正则表达式世界的新手 我需要捕获一些不同类型的字符串 顺便说一下 请建议更优雅的方式来捕获此类字符串 n 任意正数 不相同 n 0 0 0 0 n n 0 0 0 n n n 0 0 n n n n 0 n n n n n 我尝试使用这
  • 从剪贴板上传图片到服务器

    我寻找解决方案很长时间 但找不到任何解决方案 是否有可能将图片从剪贴板上传到服务器上的文件 通过按 ctrl v 它可以适用于 Chrome 使用 PHP Javascript jquery 或者其他什么 一些 Chrome 的外部扩展 多
  • cucumber.js 并且不是一个函数

    我正在练习使用 cucumber js 通过 BDD 编写一些单元测试 当我尝试使用 And 语句时 该错误表明 TypeError And is not a function 这是我的代码 feature Feature dataTabl
  • 从 XML 文件获取子节点

    我有一个如下所示的 XML 文件
  • 将多个 csv 文件合并为一个 csv 文件

    我正在尝试将多个 csv 文件合并为一个 并尝试了多种方法 但我很挣扎 我从多个 csv 文件导入数据 当我将它们一起编译成一个 csv 文件时 似乎前几行填充得很好 但随后它开始在行之间随机输入可变数量的空格 并且它永远不会填写完合并的
  • 如何为ant任务创建嵌套元素?

    是否可以为任何 ant 任务创建嵌套元素 例如
  • 解析来自远程网站的 xml 数据

    我想解析来自远程网站的xml数据http services faa gov airport status IAD format xml http services faa gov airport status IAD format xml
  • Visual Studio 2019打开解决方案文件不兼容

    我想我正在使用 Visual Studio 2017 并编写了一个 SSIS 包 现在我安装了Visual Studio 2019 但无法打开解决方案文件 错误 不支持 此版本的 Visual Studio 无法打开 以下项目 项目类型可能
  • Azure Functions 的身份验证

    我花了 24 小时阅读有关如何创建 Azure Functions 的所有内容 并成功将 MVC WebApi 转换为具有多个功能的新 Function App 我的问题是 我没有找到任何关于如何使用它们进行最基本的身份验证的明确文档或教程
  • 为什么没有与 new/delete 系列等价的 realloc?

    正如标题所说 我知道没有与 C 相当的东西realloc in the new delete经营者家族 我已经找到了this https stackoverflow com questions 67225388 implementing c
  • 使用 Tkinter 实现密码对话框

    我正在尝试实现一个获取用户密码的对话框 我已经创建了班级PasswordDiaglog继承自tk Toplevel但这会导致其执行不阻塞父框架的问题 import Tkinter as tk class PasswordDialog tk
  • 启动 TaskHost.exe 失败,尝试运行 Windows Phone 8 应用程序?

    我的 VS 2013 设置已经运行良好几个月了 今天我尝试更新到 Visual Studio 2013 Update 2 RC 就像上次我更新到 Update 1 时一样 安装程序严重失败 并出现大量标有 哈希值不正确 错误的软件包 不幸的
  • 从 PHP 和设置权限在 phpBB3 中创建论坛

    我正在尝试在现有论坛上创建一个新论坛 我可以非常轻松地创建新论坛并从管理控制台查看它 问题是我也需要它向用户显示在前端 这是通过权限完成的 因此 我试图做的是将父论坛 公开的 的权限复制到我创建的论坛 然而 该论坛似乎仍然没有出现在面向公众
  • onActivityResult 的问题

    我正在创建一个应用程序 在应用程序启动时相机会打开拍照 我还在应用程序中实现了 Facebook 登录FB Login http developers facebook com docs howtos androidsdk 3 0 logi
  • 黑莓:选择列表中的项目,返回上一屏幕

    我为我的问题准备了一个非常简短的测试用例 如下 单击按钮时 我想在新屏幕中显示字符串列表 用户选择列表中的一项后 应再次显示上一屏幕 并且按钮标签应设置为所选字符串 我的两个问题是 从菜单内部我不知道如何弹出当前显示的屏幕 如何将所选项目从