本文为BlackBerry应用开发者指南系列文章的第四篇《BlackBerry应用开发者指南 选项API》。net.rim.blackberry.api.options 中的BlackBerry选项API允许你将一个选项条目增加到设备选项中.
使用此功能可以增加一个系统级的选项到多个程序可以使用的BlackBerry设备中.
当你在主屏幕上点击Options图标时,将会出现一列选项,例如自动文本(AutoText),日期/时间(Date/Time),和防火墙.用户可以选择这些项查看某个选项的屏幕.此屏幕显示一个或多个字段.一般来说,用户可以更改每个字段的值.
增加选项
注册增加选项
OptionsProvider接口的实现允许应用程序增加选项.它包含了getTitle(),save()以及populateMainScreen()的实现.
BlackBerry设备启动时增加选项.
创建一个类库工程,此工程有一个libMain()方法完成需要的注册.
创建一个类库工程
◆在BlackBerry JDE中,创建一个工程.
◆右击工程,然后单击Properties.
◆在Properties窗口,单击Application标签.
◆在Project type下拉列表中,单击Library.
◆在启动选项里选择Auto-run.
◆单击OK.
作为一个选项提供者(Options Provider)注册
getInstance()的实现可以得到一个类的静态实例.一次只存在一个实例.调用libMain()的registerOptionsProvider()方法.将一个类的静态实例作为参数.
复制privatestatic DemoOptionsProvider _instance;
//...
publicstatic DemoOptionsProvider getInstance() {
if(_instance == null) {
_instance = new DemoOptionsProvider("Options Demo");
}
return _instance;
}
//...
publicstaticvoid libMain(String[] args) {
OptionsManager.registerOptionsProvider(getInstance());
}
1.2.3.4.5.6.7.8.9.10.11.12.
保存选项
为了保存当前选择的选项值,请实现Persistable接口.在你的实现中,定义方法设置所选的选项值,以及提交和获取持久存储里的选项值.
注:如果你作为一个内部类实现Persistable接口,将它的get(),set(),以及commit()方法设置为public,这样其他的应用程序就可以访问选项数据.
提供选项数据的访问
在你的类库里,增加一个公共方法允许其他的应用程序访问选项数据.
代码实例
本实例描述了选项的使用.
例: DemoOptionsProvider.java
复制/**
* DemoOptionsProvider.java
* Copyright 2002-2005 Research In Motion Limited.
*/
package com.rim.samples.docs.demooptionsprovider;
import net.rim.blackberry.api.options.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.i18n.*;
import net.rim.device.api.system.*;
import net.rim.device.api.util.*;
// A simple library class to demonstrate the use of the options facilities.
publicfinalclass DemoOptionsProvider implements OptionsProvider {
// members
private ObjectChoiceField _ocf;
private OptionsDemoData _data;
private String _title;
privatestatic DemoOptionsProvider _instance;
// constructors
private DemoOptionsProvider() {
}
private DemoOptionsProvider(String title) {
_title = title;
_data = OptionsDemoData.load();
}
// Only allow one instance of this class.
publicstatic DemoOptionsProvider getInstance() {
if (_instance == null) {
_instance = new DemoOptionsProvider("Options Demo");
}
return _instance;
}
// On startup, create the instance and register it.
publicstaticvoid libMain(String[] args) {
OptionsManager.registerOptionsProvider(getInstance());
}
// Get the title for the option item.
public String getTitle() {
return _title;
}
// Add fields to the screen.
publicvoid populateMainScreen(MainScreen screen) {
int index = _data.getSelected();
String[] choices = {“High”, “Low”, “None”};
_ocf = new ObjectChoiceField(“Security: “, choices, index);
screen.add(_ocf);
}
// Save the data.
publicvoid save() {
_data.setSelected(_ocf.getSelectedIndex());
_data.commit();
}
// Retrieve the data. Used by other applications to access options data.
public OptionsDemoData getData() {
return _data;
}
// Inner class to store selected option values.
publicstaticfinalclass OptionsDemoData implements Persistable {
privatestaticfinallong ID = 0x6af0b5eb44dc5164L;
privateint _selectedOption;
private OptionsDemoData() {
}
publicint getSelected() {
return _selectedOption;
}
publicvoid setSelected(int index) {
_selectedOption = index;
}
publicvoid commit() {
PersistentObject.commit(this);
}
privatestatic OptionsDemoData load() {
PersistentObject persist = PersistentStore.getPersistentObject(
OptionsDemoData.ID );
OptionsDemoData contents = (OptionsDemoData)persist.getContents();
synchronized( persist ) {
if( contents == null ) {
contents = new OptionsDemoData();
persist.setContents( contents );
persist.commit();
}
}
return contents;
}
}
}
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.
【编辑推荐】
简介BlackBerry API
BlackBerry应用开发者指南 使用受控API
BlackBerry应用开发者指南 Mail API
BlackBerry应用开发者指南 PIM API
暂时没有评论,来抢沙发吧~