2013-02-12 73 views
0

我是黑莓手機新手,在一個地方被卡住了。我有一個自定義的下拉菜單,我希望如果我從菜單中選擇第二個選項,應該添加一個字段,如果我從菜單中選擇第一個選項,字段應該刪除。這是我的自定義下拉菜單。如何在黑莓運行時添加一個字段?

 public FWCustomChoiceField(final Object choice[]) { 
    edit_field = GlobalUtils.getImage(Display.getWidth() + "x"+ Display.getHeight() + "bb_dropdown1.png"); 

    this.choice = new Object[choice.length]; 
    this.choice = choice; 
    text = choice[0].toString(); 
    choiceField = new ListField() { 
     protected boolean navigationClick(int status, int time) { 
      //buttonIndexFunctionality(getSelectedIndex()); 

      Field focus = UiApplication.getUiApplication().getActiveScreen().getLeafFieldWithFocus(); 
      if (focus instanceof ListField) { 
       ChoicePopupScreen popup = new ChoicePopupScreen(20, Display.getHeight()/ 2 - (choice.length * 20), choice); 
       popup.setChoice(choice); 
       UiApplication.getUiApplication().pushScreen(popup); 
      } 
      return super.navigationClick(status, time); 
     } 
    }; 



    choiceField.setSize(1); 
    choiceField.setCallback(new TestListCallback()); 
    add(choiceField); 
    invalidate(); 
} 
    public int getListFieldIndex() 
{ 

    return choiceField.getSelectedIndex(); 
} 

public void setSelIndex(int index) { 
    this.index = index; 
    this.text = choice[index].toString(); 
    choiceField.invalidate(); 
} 

public String getValue() { 
    String value = choice[index1].toString(); 
    return value; 

} 

public int getSelectedIndex() { 
    return index; 
} 

我搜索並發現我需要在運行時重建屏幕,但無法弄清楚如何去做。

+0

添加現場經理(hfm/vfm)到屏幕上。如果您單擊第二個菜單,請將相應的字段添加到字段管理器並使其無效。當您單擊第一個選項時,請從字段管理器中刪除該字段。 – Signare 2013-02-12 05:26:20

+0

我正在做同樣的事情,但無法在運行時做到這一點。當我點擊提交按鈕比字段添加。 – MRX 2013-02-12 05:29:39

+0

當您點擊下拉菜單時,您想更改字段?是在運行時間? – Signare 2013-02-12 05:32:23

回答

0

首先創建一個Field manager並將其添加到屏幕上。

VerticalFieldManager title1; 
title1=new VerticalFieldManager(FIELD_HCENTER) 
      { 

      }; 
title1.add(new NullField()); 
add(title1); 

現在,當你在下拉菜單中選擇第二項下,請執行下列操作 -

title1.deleteAll(); 
title1.add(add your field);//here add your field to title1. 
title1.invalidate(); 

當你點擊下拉菜單中的第一項, -

title1.deleteAll(); 
title1.invalidate();