问题在使用上的滑动器移动的影响 [英] Issue while using moving effect on slider

查看:106
本文介绍了问题在使用上的滑动器移动的影响的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面我用一个数值变化在滑块上的影响;如果我移动滑块,将滚动并在编辑栏,显示更新的值按滑块的运动。此外,还有一个编辑场效应那里的滑块应移动按进入编辑字段中的值;但它不工作。

当我注释掉的编辑场效应一部分,它工作正常,但是当我再次申请该编辑场效果,那么它是不工作...

//用于移动滑块

FieldChangeListener listenerslider1 =新FieldChangeListener(){        公共无效fieldChanged(场场,诠释上下文){
            尝试{                如果(场== serumosmslider){                    INT serumosmslidervalue = serumosmslider.getValue();
                    字符串strplasmaslidervalue =整数
                            的ToString(serumosmslidervalue);
                    edtserumosm.setText(strplasmaslidervalue);                }            }赶上(IllegalStateException异常五){                e.printStackTrace();
            }赶上(NullPointerException异常五){
                e.printStackTrace();
            }
        }
    };    serumosmslider.setChangeListener(listenerslider1);

//为EditField中

FieldChangeListener listenereditslider1 =新FieldChangeListener(){        公共无效fieldChanged(场场,诠释上下文){            hfmslider1.deleteAll();
            。字符串stredtweight = edtserumosm.getText()的toString();            INT editweight =的Integer.parseInt(stredtweight);                SliderField theSlider =新SliderField(slider2thumb,
                        slider2progress,slider2base,slider2thumbfoc,
                        slider2progressfoc,slider2basefoc,201,
                        editweight,10,10);
                hfmslider1.add(theSlider);
                hfmslider1.invalidate();
        }    };    edtserumosm.setChangeListener(listenereditslider1);


解决方案

您似乎重新创建 SliderField 每次 EditField中的价值变化。

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

我不认为你想这样做。就像你的更新的的 EditField中文本时滑块场的变化,我觉得你应该的更新的的<$ C $当 EditField中文本更改C> SliderField 值。所以,这样的事情:

FieldChangeListener listenereditslider1 =新FieldChangeListener(){    公共无效fieldChanged(场场,诠释上下文){        如果(场== edtserumosm&放大器;&安培;!=背景FieldChangeListener.PROGRAMMATIC){            。字符串stredtweight = edtserumosm.getText()的toString();            尝试{
                INT editweight =的Integer.parseInt(stredtweight);
                serumosmslider.setValue(editweight);
            }赶上(NumberFormatException的NFE){
                // TODO:什么?
            }
        }
    }};edtserumosm.setChangeListener(listenereditslider1);

Here i use a value changing effect on a slider; if i move the slider, it will scroll and display updated values in an edit field, as per the moving of the slider bar. Also, there is an edit field effect where the slider should be moved as per the values entered into the edit field; but it is not working.

When i comment out part of the edit field effect, it is working properly but when i apply that edit field effect again, then it is not working ...

// for slider move

    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);

// for 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);

解决方案

You appear to be recreating your SliderField every time the EditField's value changes.

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

I don't think you want to do that. Just like you update the EditField text when the slider field changes, I think you should update the SliderField value when the EditField text is changed. So, something like this:

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);

这篇关于问题在使用上的滑动器移动的影响的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆