牛骨文教育服务平台(让学习变的简单)
博文笔记

Seekbar改变EditText的值死循环解决

创建时间:2017-04-11 投稿人: 浏览次数:251

Seekbar和EditText互相改变值,出现死循环解决方案!设置一个Boolean在EditText改变之前(beforeTextChanged)设置为false,在改变之后(afterTextChanged)设置为true

!看代码

private SeekBar seekBar;
private EditText editText;
private Boolean isInput=false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    seekBar=(SeekBar) findViewById(R.id.seek_bar);
    editText=(EditText) findViewById(R.id.edt1);
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            isInput=false;
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            String str=charSequence.toString();
            if(TextUtils.isEmpty(str)){
                str="0";
            }
            seekBar.setProgress(Integer.parseInt(str));
        }

        @Override
        public void afterTextChanged(Editable editable) {
            isInput=true;
        }
    });
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            if(isInput){
                editText.setText(i+"");
            }

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
    });
}

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。