2013-11-26 59 views
1

這裏我使用滑塊上的值改變效果;如果我移動滑塊,它將滾動並在編輯字段中顯示更新的值,如同移動滑塊一樣。此外,還有一個編輯字段效果,其中滑塊應根據輸入到編輯字段中的值進行移動;但它不起作用。在滑塊上使用移動效果時發生的問題

當我註釋掉的編輯場效應一部分,它工作正常,但是當我再次申請該編輯場效果,那麼它是不工作... //用於移動滑塊

FieldChangeListener listenerslider1 = new FieldChangeListener() { 

     public void fieldChanged(Field field, int context) { 
      try { 

       if (field == serumosmslider) { 

        int serumosmslidervalue = serumosmslider.getValue(); 
        String strplasmaslidervalue = Integer 
          .toString(serumosmslidervalue); 
        edtserumosm.setText(strplasmaslidervalue); 

       } 

      } catch (IllegalStateException e) { 

       e.printStackTrace(); 
      } catch (NullPointerException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 

    serumosmslider.setChangeListener(listenerslider1); 

//爲EditField中

FieldChangeListener listenereditslider1 = new FieldChangeListener() { 

     public void fieldChanged(Field field, int context) { 

      hfmslider1.deleteAll(); 
      String stredtweight = edtserumosm.getText().toString(); 

      int editweight = Integer.parseInt(stredtweight); 

       SliderField theSlider = new SliderField(slider2thumb, 
         slider2progress, slider2base, slider2thumbfoc, 
         slider2progressfoc, slider2basefoc, 201, 
         editweight, 10, 10); 
       hfmslider1.add(theSlider); 
       hfmslider1.invalidate(); 


     } 

    }; 

    edtserumosm.setChangeListener(listenereditslider1); 
+1

SliderField不是BB標準字段。你是在哪裏拿到的?它是否有可用的「setValue()」方法?你確定每次都重新創建它是個好主意嗎?因爲那樣刪除了與更改監聽器相關聯的SliderField的實例? –

+0

那麼你建議什麼? PLZ給我任何解決方案 – Kirti

+0

http://docs.blackberry.com/en/developers/deliverables/29251/Creating_a_slider_1626520_11.jsp從這裏我得到sliderfield – Kirti

回答

1

你出現在SliderField每次都要重新創建EditField的值變化。

SliderField theSlider = new SliderField(slider2thumb, 
      slider2progress, slider2base, slider2thumbfoc, 
      slider2progressfoc, slider2basefoc, 201, 
      editweight, 10, 10); 
    hfmslider1.add(theSlider); 

我不認爲你想這樣做。就像你更新EditField當滑動條字段發生變化時,我認爲你應該更新SliderField值,當EditField文本被改變。所以,像這樣:

FieldChangeListener listenereditslider1 = new FieldChangeListener() { 

    public void fieldChanged(Field field, int context) { 

     if (field == edtserumosm && context != FieldChangeListener.PROGRAMMATIC) { 

      String stredtweight = edtserumosm.getText().toString(); 

      try { 
       int editweight = Integer.parseInt(stredtweight); 
       serumosmslider.setValue(editweight); 
      } catch (NumberFormatException nfe) { 
       // TODO: anything? 
      } 
     } 
    } 

}; 

edtserumosm.setChangeListener(listenereditslider1); 
+0

它不工作它的拋出異常錯誤104堆棧溢出異常 – Kirti

+0

它再次拋出異常當我在移除滑塊字段後應用偵聽器滑塊字段偵聽器編輯字段偵聽器正在工作 – Kirti

+0

@Kirti,請參閱我的代碼的更新。確保'context!= PROGRAMMATIC'的測試在那裏。丟失可能導致堆棧溢出。注意:你真的應該把這個測試放在**兩個監聽器(滑塊字段和編輯字段)中。 – Nate