2010-03-06 98 views
1

哎在我的屏幕是有一個編輯框和2個自定義鍵字段爲「確定」和「取消」 下面ButtonField字段有一些更focussable標籤字段黑莓Storm 9530的跟蹤觸摸事件,而滾動

當我在編輯區域寫一個名字,然後按回車鍵,然後焦點到達「OK」按鈕,但是如何將焦點設置在「取消​​」按鈕上。

而且滾動時,焦點不會自動向前移動???

做什麼可能是單讀音混淆觸摸事件及其處理!

請幫助!!!!!!!!!!!!

代碼:

 txt_Name = new EditField(TextField.NO_NEWLINE) 
      { 
       public void paint(net.rim.device.api.ui.Graphics g) 
       { 
        g.setColor(Color.MAROON); 
        super.paint(g); 
       } 
      }; 

      txt_Name.setFont(font); 

    v1 = new VerticalFieldManager(); 
    v1.add(txt_Name); 


    ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK); 
    ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK); 

    v2 = new VerticalFieldManager(); 
    v2.add(btn1); 
    v2.add(btn2); 

    LabelField l1 = new LabelField("Hello Moon ",Field.Focussable); 
    LabelField l2 = new LabelField("Hello Citizen",Field.Focussable); 
    LabelField l3 = new LabelField("Hello People",Field.Focussable); 
    LabelField l4 = new LabelField("Hello world",Field.Focussable); 

    v3 = new VerticalFieldManager(); 
    v3.add(l1); 
    v3.add(l2); 
    v3.add(l3); 
    v3.add(l4); 

    add(v1); 
    add(v2); 
    add(v3); 
} 


protected boolean navigationClick(int status, int time) 
    { 
    if(OK.isFocus()) 
      { 
       //execute some code 
       return true; 
      } 
if(CANCEL.isFocus()) 
      { 
       //execute some code 
       return true; 
      } 
     } 
+0

姆斯瓦蒂看到更新我的回答 – 2010-03-09 08:19:51

回答

1
txt_Name = new EditField(TextField.NO_NEWLINE) 
      { 
       public void paint(net.rim.device.api.ui.Graphics g) 
       { 
        g.setColor(Color.MAROON); 
        super.paint(g); 
       } 
      }; 

      txt_Name.setFont(font); 

    v1 = new VerticalFieldManager(); 
    v1.add(txt_Name); 


    ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK); 
    ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK); 

    h2 = new HorizontalalFieldManager(); 
    h2.add(btn1); 
    h2.add(btn2); 

    LabelField l1 = new LabelField("Hello Moon ",Field.Focussable); 
    LabelField l2 = new LabelField("Hello Citizen",Field.Focussable); 
    LabelField l3 = new LabelField("Hello People",Field.Focussable); 
    LabelField l4 = new LabelField("Hello world",Field.Focussable); 

    v3 = new VerticalFieldManager(); 
    v3.add(l1); 
    v3.add(l2); 
    v3.add(l3); 
    v3.add(l4); 

    add(v1); 
    add(h2); 
    add(v3); 
} 


protected boolean navigationClick(int status, int time) 
    { 
int index = h2.getFieldwithFocusIndex(); 
    if(h2==0) 
      { 
       //execute some code for OK 
       return true; 
      } 
if(h2==1) 
      { 
       //execute some code for cancel 
       return true; 
      } 
     } 
0

可以通過覆蓋含有可聚焦領域,如好屏幕或管理者的「navigationMovement」方法控制聚焦順序和取消按鈕。只需評估傳入該方法的參數,使用Field.setFocus()將焦點設置爲所需的字段並返回true。

至於重點不是滾動向前發展 - 這只是方式的觸摸屏用戶界面的作品。只有當您觸摸可對焦區域時,焦點纔會移動 - 因此,如果在「輕彈」滾動屏幕時未觸及任何可對焦區域,焦點不會改變。

+0

以及馬克,我面對的是像:: 當我進入編輯字段的名稱說「你好」,在這之後我輕觸確定問題按鈕 但由於焦點仍然在編輯字段,所以當我輕觸確定按鈕則其對應的代碼不執行.. 我試着用的TouchEvent,navigationClick工作,navigationmovement 但cldnt找到一個解決方案,我的按鈕不援引,怎麼辦? – Swati 2010-03-08 05:09:35

+0

嘗試在每個按鈕上設置一個FieldChangeListener,而不是使用屏幕的navigationClick。 – 2010-03-08 05:41:09

+0

馬克我試過你用buttonField說但仍然沒有工作 事實上,我已經使用自定義字段代替按鈕這是一個focusssable場havig圖像,但它也不能在那.. – Swati 2010-03-08 05:56:44

1

我做就像馬克的建議,爲每個按鈕單獨FieldChangeListeners:

class Scr extends MainScreen { 
    EditField txt_Name; 
    ButtonField btnOK; 
    ButtonField btnCancel; 
    VerticalFieldManager v1; 
    VerticalFieldManager v2; 
    VerticalFieldManager v3; 
    Font font = Font.getDefault().derive(Font.BOLD, 20); 

    public Scr() { 
     txt_Name = new EditField(TextField.NO_NEWLINE) { 
      public void paint(net.rim.device.api.ui.Graphics g) { 
       g.setColor(Color.MAROON); 
       super.paint(g); 
      } 
     }; 

     txt_Name.setFont(font); 

     v1 = new VerticalFieldManager(); 
     v1.add(txt_Name); 

     btnOK = new ButtonField("OK", ButtonField.CONSUME_CLICK); 
     btnOK.setChangeListener(
      new FieldChangeListener(){ 
       public void fieldChanged(Field field, int context) { 
      Dialog.inform("OK pressed"); 
     }}); 
     btnCancel = new ButtonField("Cancel", ButtonField.CONSUME_CLICK); 
     btnCancel.setChangeListener(
      new FieldChangeListener(){ 
       public void fieldChanged(Field field, int context) { 
      Dialog.inform("Cancel pressed"); 
     }}); 
     v2 = new VerticalFieldManager(); 
     v2.add(btnOK); 
     v2.add(btnCancel); 

     LabelField l1 = new LabelField("Hello Moon", Field.FOCUSABLE); 
     LabelField l2 = new LabelField("Hello Citizen", Field.FOCUSABLE); 
     LabelField l3 = new LabelField("Hello People", Field.FOCUSABLE); 
     LabelField l4 = new LabelField("Hello world", Field.FOCUSABLE); 

     v3 = new VerticalFieldManager(); 
     v3.add(l1); 
     v3.add(l2); 
     v3.add(l3); 
     v3.add(l4); 

     add(v1); 
     add(v2); 
     add(v3); 
    } 
} 

現在看來是確定:
alt text http://img40.imageshack.us/img40/6472/textentered.jpgalt text http://img59.imageshack.us/img59/7574/okpressed.jpgalt text http://img641.imageshack.us/img641/9246/cancelpressed01.jpg

UPDATE

姆斯瓦蒂我可以用Storm模擬器點擊這些按鈕。 我無法找到比模擬器中的鱈魚文件更老的任何其他解釋。您可以通過更改代碼中的任何標籤文本來快速檢查它,然後部署並檢查此更改是否將應用於設備上的應用程序。如果不是,這是舊版本,你應該再次清理模擬器並部署應用程序。
希望這會幫助你!
又見BlackBerry - Changes are not getting reflected in my app

+0

最大我在同樣的工作,但仍然集中不來就OKñ取消按鈕磨片我按下它 它這麼簡單還無法做到 天哪我在做什麼錯誤????????? ? 以及感謝ü如此多的FR的努力.... 讓我找到哎重點談到了什麼愚蠢的錯誤即時通訊做 – Swati 2010-03-08 11:57:15

+0

上的按鈕時,我按下鍵盤從 現在箭頭鍵做什麼.. – Swati 2010-03-08 12:17:49

+0

我刪除了我的代碼NAD與你一起工作! 我想在我的情況下,問題是在其重點不出現..... – Swati 2010-03-09 11:58:41