2011-09-20 59 views
0

我有一个query.i在垂直字段管理器内创建3个水平管理器。当编译我的代码时,我得到IllegalStatException.i正在执行此操作。illegalStateException在垂直字段管理器内添加水平字段管理器

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

我已经这样做了,但得到的exception.can有人告诉我,这个解决方案..

回答

1

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

您可以使用for或while和内创建一个新对象并将其添加到父管理者

0

你创建三个Horizo​​ntalFieldManagers具有相同的名称做这样的事情!不要做 - 尝试:

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

事情是你hfm1一次又一次地创造了同一个对象,连续3次 您可以创建一个像hfm1 3个不同的对象, 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 ...更好地遵循第一种方法。