Changes

Jump to: navigation, search

Lab BlackBerry Example

3,957 bytes added, 13:53, 27 February 2011
no edit summary
''File->New->Others->BlackBerry Project''
''Note: If you really want really to learn how to build a BB app, then in the wizard choose the ''Empty Application '' option.''
The structure of BB project will be defined, but as the level on of code generation, one will get only an empty Java app, with a code similar with thisone:
<source lang="java">
package mypackage;
The second screen must have a title, textfield, and button to let the user go back to the first screen.
* '''Title'''
For the title one could use:
void net.rim.device.api.ui.container.MainScreen.setTitle(Field arg0)
for as the fieldargument, you can build a LabelField object withusing the constructor from the package: net.rim.device.api.ui.component.LabelField;  public LabelField(Object arg0, long arg1)
Thus, to set the title of the screen you can write the instruction:
'''setTitle(new LabelField("Second Screen !", LabelField.USE_ALL_WIDTH));'''
* '''Text Field'''Fot the screen text, one can use the constructor of RichTextField class from the package:
net.rim.device.api.ui.component.RichTextField
 
public RichTextField(String text, long style)
that constructs a plain RichTextField for an object in the specified style. 
To add the field to the screen you invoke the method
void net.rim.device.api.ui.Screen.'''add'''(Field arg0)
Thus, to add the text field to your screen you have to write the following instruction:
'''add(new RichTextField("Here is the second activity", Field.NON_FOCUSABLE));''' * '''Button''' The package ''net.rim.device.api.ui.component'' contains a class called ''ButtonField''. When the user clicks a ButtonField the objects that are listeners to this event (i.e. click event) are notified. The notification takes placed by invoking its ''fieldChanged()'' method of the ''FieldChangeListener'' interface. For an object to be qualified as a listener two things MUST happend:a. The class of that object must implement the ''FieldChangeListener'' interface.b. The source of the event, namely the button object must add this particular listener to the collection of listeners.------------------Here is a generic code sample: 1. Build the source object, the button: ButtonField buttonField = new ButtonField("Test Button"); 2. Build the listener object: FieldChangeListener listener = new FieldChangeListener() { public void fieldChanged(Field field, int context) { ButtonField buttonField = (ButtonField) field; System.out.println("Button pressed: " + buttonField.getLabel()); } }; 3. Add the listener object to the list of source listeners: buttonField.setChangeListener(listener); Important note: For expressiveness the steps 2 and 3 are combined to produce code like this:  buttonField.setChangeListener(new FieldChangeListener() { public void fieldChanged(Field field, int context) { ButtonField buttonField = (ButtonField) field; System.out.println("Button pressed: " + buttonField.getLabel()); } });   ----------------- Here is the code you must write to add the button ''_buttonGoBack'' to the second screen<source lang="java"> ButtonField _buttonGoBack = new ButtonField("Go Back", ButtonField.FIELD_HCENTER | ButtonField.CONSUME_CLICK); /** build the listener object and add it to the button source, namely the _buttonGoBack object */ _buttonGoBack.setChangeListener(new FieldChangeListener() { public void fieldChanged(Field field, int context) { UiApplication.getUiApplication().popScreen(); } });  /** add the button to the screen */ add(_buttonGoBack);</source> If you want to add some specific color to the second screen you may use ''net.rim.device.api.ui.container.VerticalFieldManager''. The vertical field manager lays out fields top to bottom in a single column. One can use the manager object to set the background of an element. Let us suppose that you want the second screen to have the coral color. Therefore, you should use the code like this one:  VerticalFieldManager manager = (VerticalFieldManager) getMainManager(); manager.setBackground(BackgroundFactory.createSolidBackground(Color.CORAL)); Eventually, your second screen class called ''NextScreen'' could be implemented with the code like this one: <source lang="java">package mypackage; import net.rim.device.api.ui.*;import net.rim.device.api.ui.container.*;import net.rim.device.api.ui.component.*;import net.rim.device.api.ui.decor.BackgroundFactory; class NextScreen extends MainScreen {  public NextScreen() {  setTitle(new LabelField("Second Screen !", LabelField.USE_ALL_WIDTH)); VerticalFieldManager manager = (VerticalFieldManager) getMainManager(); manager.setBackground(BackgroundFactory.createSolidBackground(Color.CORAL));  add(new RichTextField("Here is the second activity", Field.NON_FOCUSABLE));  ButtonField _buttonGoBack = new ButtonField("Go Back", ButtonField.FIELD_HCENTER | ButtonField.CONSUME_CLICK);  _buttonGoBack.setChangeListener(new FieldChangeListener() { public void fieldChanged(Field field, int context) { UiApplication.getUiApplication().popScreen(); } }); add(_buttonGoBack); }}</source>------- In Eclipse, the Project structure should look similar to:[[File:BBLab-Project.png]]

Navigation menu