java - 非法状态异常:Field added to a manager while it is already parented

标签 java blackberry blackberry-jde

我收到异常IllegalStateException:

Field added to a manager while it is already parented

当我第二次调用下面的函数时,当我更改微调器的值并且第二次调用该函数时,我收到非法状态异常。

这是我的代码:

void showSpinnerDialog(int type) {
    if (_customSpinnerPopup == null) {
        _customSpinnerPopup = new CustomSpinnerPopup();
    }

    UiApplication.getUiApplication().pushModalScreen(_customSpinnerPopup);

    if (_customSpinnerPopup.isSet()) {
        String choice = _customSpinnerPopup.getChoice();
        _editFieldSpinbox.setText(choice);
        getAlbumsForLanguage(choice);
    }
}

private void getAlbumsForLanguage(String choice) {
    language = choice;
    fieldManager.deleteAll();

    final RichList list = new RichList(fieldManager, true, 2, 1);
    songItemsList = new Vector();
    songItemsList = ServerAPI.getNewSongsForLanguage(language, null);
    for (int i = 0; i < songItemsList.size(); i++) {
        SongItem songItem = (SongItem) songItemsList.elementAt(i);
        list.add(new Object[] { bitmap1, songItem.getName(),
            "Artist:" + songItem.getArtist(),
        "Movie: " + songItem.getMovie() });
    }

    add(fieldManager);// **here i am getting exception**
    list.setFocusPolicy(TableController.ROW_FOCUS);

    list.setCommand(new Command(new CommandHandler() {

        public void execute(ReadOnlyCommandMetadata metadata, Object object) {
            SongItem song = (SongItem) songItemsList.elementAt(list.getFocusRow());
            Dialog.alert("exe !" + song.getName());

最佳答案

正如异常消息所示,您不能将 FieldManager(这是一个 Field)添加到另一个容器,超过一次,除非您先将其删除。当您第二次调用 getAlbumsForLanguage() 时,您将调用:

add(fieldManager);// **here i am getting exception**

第二次,这是非法的。要解决这个问题,只需将该行括起来:

if (fieldManager.getManager() == null) {
   add(fieldManager);
}

关于java - 非法状态异常:Field added to a manager while it is already parented,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16098467/

相关文章:

java - 我的应用程序需要 JavaWS 缓存文件列表

java - 黑莓应用安全

blackberry - Blackberry System.getProperty(“browser.useragent”)

java - 如何在 Android Studio 上以编程方式更改小部件 ID

java - 在不同类android中访问变量的最佳方法

javascript - 网站需要黑莓用户将事件添加到他们的日历的按钮

blackberry - 避免在单击按钮时显示菜单

blackberry - 多行标签字段

java - Iphone 应用程序移植到 Blackberry RIM

java - 如何使用 Sharedpreferences 汇总所有分数?