invalidStateException при добавлении горизонтальных менеджеров полей в вертикальном менеджере полей

У меня есть один запрос. Я создаю 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 ответа

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

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

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

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

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}
}
Другие вопросы по тегам