【问题标题】:illegalStateException while adding horizontal field managers within vertical field manager在垂直字段管理器中添加水平字段管理器时出现非法状态异常
【发布时间】:2011-11-20 23:39:19
【问题描述】:

我有一个查询。我正在垂直字段管理器中创建 3 个水平管理器。 在编译我的代码时,我得到了 IllegalStatException。我正在这样做。

VerticalFieldmanager vfm = new VerticalFieldManager();
  HorizontalFieldManager hfm1 = new HorizontalFieldManager();
  {somecode}
  HorizontalFieldManager hfm1 = new HorizontalFieldManager();
  {somecode}   
 HorizontalFieldManager hfm1 = new HorizontalFieldManager();
  {somecode}

然后我将 hfm 添加到 vfm

 vfm.add(hfm1);
 vfm.add(hfm1);
 vfm.add(hfm1);
  add(vfm);    

我已经这样做了,但遇到了异常。谁能告诉我解决方案。

【问题讨论】:

    标签: blackberry-eclipse-plugin horizontalfieldmanager


    【解决方案1】:

    问题是您一次又一次地创建同一个对象 hfm1 3 次 您可以创建 3 个不同的对象,例如 hfm1、hfm2 和 hfm3 喜欢

     VerticalFieldmanager vfm = new VerticalFieldManager();
        HorizontalFieldManager hfm1 = new HorizontalFieldManager();
        {somecode}
        HorizontalFieldManager hfm2 = new HorizontalFieldManager();
        {somecode}   
        HorizontalFieldManager hfm3 = new HorizontalFieldManager();
        vfm.add(hfm1);
        vfm.add(hfm2);
        vfm.add(hfm3);
         add(vfm)
    

    VerticalFieldmanager vfm = new VerticalFieldManager();
    HorizontalFieldManager hfm1 = new HorizontalFieldManager();
    {somecode}
    hfm1 = new HorizontalFieldManager();
    {somecode}   
    hfm1 = new HorizontalFieldManager();
    {somecode}
    

    但在此仅添加最后一个 hfm1,因为由于运行时多态性...第一个 hfm1 的对象在第二个 hfm1 初始化时释放它的内存,第三个 hfm1 释放第二个 hfm1 添加的对象内存

    所以只有最后一个 hfm1 被添加到 vfm 在这种情况下......最好遵循第一种方法。

    【讨论】:

      【解决方案2】:

      您正在创建三个同名的 Horizo​​ntalFieldManager!不要那样做 - 试试:

      enter code here
      VerticalFieldmanager vfm = new VerticalFieldManager();
      HorizontalFieldManager hfm1 = new HorizontalFieldManager();
      {somecode}
      hfm1 = new HorizontalFieldManager();
      {somecode}   
      hfm1 = new HorizontalFieldManager();
      {somecode}
      

      enter code here
      VerticalFieldmanager vfm = new VerticalFieldManager();
      for(int i=0;i<3;i++)
      {
       HorizontalFieldManager hfm1 = new HorizontalFieldManager();
       {somecode}
      }
      

      【讨论】:

        【解决方案3】:

        您不能一遍又一遍地向经理添加相同的字段/经理。

        您可以使用 for 或 while 执行类似的操作,并在其中创建一个新对象并将其添加到父管理器

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-05
          • 1970-01-01
          相关资源
          最近更新 更多