invalidStateException при добавлении горизонтальных полевых менеджеров в вертикальном полевом менеджере - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть один запрос. Я создаю 3 горизонтальных менеджера внутри вертикального менеджера поля.во время компиляции моего кода я получаю IllegalStatException.i я делаю это.

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);    

Я сделал это, но получаю исключение. Можеткто-нибудь сказать мне решение для этого ..

Ответы [ 3 ]

1 голос
/ 20 сентября 2011

Вы не можете добавлять одно и то же поле / менеджер к менеджеру снова и снова.

Вы можете сделать что-то подобное, используя for или некоторое время, создав новый объект внутри и добавив его в родительский менеджер.

0 голосов
/ 23 апреля 2012

Дело в том, что вы создаете один и тот же объект 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 в этом случае ... лучше следовать первому подходу.

0 голосов
/ 26 сентября 2011

Вы создаете три HorizontalFieldManager с одинаковым именем! Не делай этого - попробуй:

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

OR

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