2011-09-20 55 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 ...更好地遵循第一種方法。