2012-12-18 69 views
-2

首先,请理解我的问题,因为我知道自己有太多与此相关的问题,但对我来说,没有人工作我怎样才能从管理中删除字段黑莓

为什么我不知道,请参阅我的代码。

这是工作

public final class MyScreen extends MainScreen implements FieldChangeListener 
    { 
     private combine enter_in; 
     private manager_s ms , ms_1 ; 
     private Bitmap img; 
     LabelField lb_1 , lb_2 , lb_3 ; 

     public MyScreen() 
     {   
      setTitle("MyTitle"); 

      img = Bitmap.getBitmapResource("icon.png"); 
      //Bitmap img_1 = Bitmap.getBitmapResource("icon.png"); 

      enter_in = new combine (Field.FOCUSABLE , img );  
      enter_in.setChangeListener(this); 



      ms = new manager_s(0 , 4); 
      ms.add(enter_in); 

      lb_1 = new LabelField("Menu") ; 
      lb_2 = new LabelField("Favorites") ; 
      lb_3 = new LabelField("Reserved") ; 

      ms.add(lb_1); 
      ms.add(lb_2); 
      ms.add(lb_3); 

      add(ms); 

     } 
    } 

,但是当我在执行FieldChangedListener,当时ms.delete(lb_1)不工作,但delete(ms)工作,请帮助解决这个问题

public void fieldChanged(Field field, int context) 
    { 
     if (field == enter_in) 
     { 
      ms.delete(lb_1);    
     } 
    } 

所以,我我问是否有任何ms.delete(lb_1)不能在MyScreen类下工作的原因。

看,这是我的manager_class里面我是用的,经理(custom_manager)和该经理是通过我的类扩展,添加屏幕

public class manager_s extends Manager 
    { 
     int col ; 
     int w_1 = 20 ; 

     protected manager_s(long style , int col) 
     { 
      super(style); 
      this.col = col ; 
     } 
     protected void sublayout(int width, int height) 
     { 

       for (int i = 0 ; i < col ; i ++) 
       { 
        Field field = getField (i); 

        layoutChild(field , 130 , 100); 
       } 

       for (int i = 0 ; i < col ; i ++) 
       { 
        Field field = getField (i); 

        setPositionChild (field , w_1 , 20); 

        w_1 = w_1 + 135 ; 

      setExtent (width , 200 ); 
     }  
    } 
} 

中的字段和错误是INDEX_OUT_OF_BOUND_EXCEPTION,那是我的问题,因为互联网上的每一个人(作为一个资源)都在说删除该字段,但我的情况没有任何工作。

+0

什么是组合和manager_s? – Signare

+0

联合是一个custom_button类,其中我正在创建图像按钮,这是工作正常,但与结合是我的经理,因为它我会提供代码 –

+0

问题是你的班级经理。你创建它为ms = new manager_s(0,4);所以当你删除一个项目时,它的位置被删除。 – Signare

回答

0

试试这个 -

setTitle("MyTitle"); 
    final ButtonField enter_in=new ButtonField("enter_in"); 
    add(enter_in); 

    lb_1 = new LabelField("Menu") ; 
    lb_2 = new LabelField("Favorites") ; 
    lb_3 = new LabelField("Reserved") ; 

    final HorizontalFieldManager ms=new HorizontalFieldManager(); 
    ms.add(lb_1); 
    lb_1.setMargin(0,50,0,0);//Here you can set the spacing between the Fields. 
    ms.add(lb_2); 
    lb_2.setMargin(0,50,0,0);//Here you can set the spacing between the Fields. 
    ms.add(lb_3); 

    add(ms); 

    FieldChangeListener listener=new FieldChangeListener() { 

     public void fieldChanged(Field field, int context) { 
     if(field==enter_in){ 
      ms.delete(lb_1); 
      ms.invalidate(); 

     } 
     } 
    }; 
    enter_in.setChangeListener(listener); 

代替我ButtonField字段,你可以用你的组合。