BlackBerry 应用程序开发者指南 第二卷:高级--第4章 增加设备选项
作者:Confach 发表于2006-04-28 22:18 pm
版权信息:可以任意转载, 转载时请务必以超链接形式标明文章原始出处 和作者信息.
http://www.cnblogs.com/confach/articles/387946.html
4
第4章 增加设备选项
选项API 增加选项 |
选项API
net.rim.blackberry.api.options 中的BlackBerry选项API允许你将一个选项条目增加到设备选项中.
使用此功能可以增加一个系统级的选项到多个程序可以使用的BlackBerry设备中.
当你在主屏幕上点击Options图标时,将会出现一列选项,例如自动文本(AutoText),日期/时间(Date/Time),和防火墙.用户可以选择这些项查看某个选项的屏幕.此屏幕显示一个或多个字段.一般来说,用户可以更改每个字段的值.
增加选项
注册增加选项
OptionsProvider接口的实现允许应用程序增加选项.它包含了getTitle(),save()以及populateMainScreen()的实现.
BlackBerry设备启动时增加选项.
创建一个类库工程,此工程有一个libMain()方法完成需要的注册.
创建一个类库工程
1. 在BlackBerry JDE中,创建一个工程.
2. 右击工程,然后单击Properties.
3. 在Properties窗口,单击Application标签.
4. 在Project type下拉列表中,单击Library.
5. 在启动选项里选择Auto-run.
6. 单击OK.
作为一个选项提供者(Options Provider)注册
getInstance()的实现可以得到一个类的静态实例.一次只存在一个实例.调用libMain()的registerOptionsProvider()方法.将一个类的静态实例作为参数.
private static DemoOptionsProvider _instance; //... public static DemoOptionsProvider getInstance() { if(_instance == null) { _instance = new DemoOptionsProvider("Options Demo"); } return _instance; } //... public static void libMain(String[] args) { OptionsManager.registerOptionsProvider(getInstance()); } |
保存选项
为了保存当前选择的选项值,请实现Persistable接口.在你的实现中,定义方法设置所选的选项值,以及提交和获取持久存储里的选项值.
为获取更多关于存储持久数据的信息,参看92页”管理持久数据”
提供选项数据的访问
在你的类库里,增加一个公共方法允许其他的应用程序访问选项数据.
代码实例
本实例描述了选项的使用.
例: 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.
public final class DemoOptionsProvider implements OptionsProvider {
// members
private ObjectChoiceField _ocf;
private OptionsDemoData _data;
private String _title;
private static DemoOptionsProvider _instance;
// constructors
private DemoOptionsProvider() {
}
private DemoOptionsProvider(String title) {
_title = title;
_data = OptionsDemoData.load();
}
// Only allow one instance of this class.
public static DemoOptionsProvider getInstance() {
if (_instance == null) {
_instance = new DemoOptionsProvider("Options Demo");
}
return _instance;
}
// On startup, create the instance and register it.
public static void libMain(String[] args) {
OptionsManager.registerOptionsProvider(getInstance());
}
// Get the title for the option item.
public String getTitle() {
return _title;
}
// Add fields to the screen.
public void populateMainScreen(MainScreen screen) {
int index = _data.getSelected();
String[] choices = {“High”, “Low”, “None”};
_ocf = new ObjectChoiceField(“Security: “, choices, index);
screen.add(_ocf);
}
// Save the data.
public void 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.
public static final class OptionsDemoData implements Persistable {
private static final long ID = 0x6af0b5eb44dc5164L;
private int _selectedOption;
private OptionsDemoData() {
}
public int getSelected() {
return _selectedOption;
}
public void setSelected(int index) {
_selectedOption = index;
}
public void commit() {
PersistentObject.commit(this);
}
private static 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;
}
}
}