Seekbar改变EditText的值死循环解决
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) { } }); }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。