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}
}