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接口.在你的实现中,定义方法设置所选的选项值,以及提交和获取持久存储里的选项值.

 :如果你作为一个内部类实现Persistable接口,将它的get(),set(),以及commit()方法设置为public,这样其他的应用程序就可以访问选项数据.

为获取更多关于存储持久数据的信息,参看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;

           }

       }

  }



posted @ 2006-04-28 22:19  张太国  阅读(1700)  评论(0编辑  收藏