Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Java Development

Posts: 131
Registered: ‎08-13-2008
My Device: Not Specified
Accepted Solution

IllegalStateException in OptionsProvider

I created an options page for my application using the "How To - Add application options to the BlackBerry Options" example. Loading and saving worked fine, but when I opened the page a second time it crashes with an IllegalStateException. It's already been solved, but I don't know the reason. 

private RichTextField text_allow; //Will crash program //private RichTextField text_allow=new RichTextField("Allow connections:",Field.NON_FOCUSABLE); public void populateMainScreen(MainScreen screen){ optionsProperties=SMOptionsProperties.getSMOP();


//works when initialised here text_allow=new RichTextField("Allow connections:",Field.NON_FOCUSABLE); screen.add(text_allow); //other things omitted }//populatrMainScreen


Is it something to do with


//Null out our member variables so that their objects can be garbage //collected. Note that this instance continues to be held by the //options manager even after the user exits the options app, //and will be re-used next time.

If I null out text_allow, NullPointerException is thrown.

If I don't, it's an IllegalStateException.




BlackBerry Development Advisor
Posts: 15,882
Registered: ‎07-09-2008
My Device: BlackBerry PRIV
My Carrier: Bell

Re: IllegalStateException in OptionsProvider

Every time an Options screen is shown, populateMainScreen is called and a new instance of MainScreen created.  This means you'll also need to create a new instance of your fields to be added to this new instance of MainScreen.


A field can only be added to a single screen.  By instantiating text_allow outside of populateMainScreen you are re-using the instance of that field, which does not work.

Mark Sohm
BlackBerry Development Advisor

Please refrain from posting new questions in solved threads.
Problem solved? Click the Accept As Solution button.