Java 使用EditText更新SeekBar
我正在开发一个BMI计算器,并添加了一个可选的SeekBar来更改edittext中的值。当我移动seekbar时,edittext中的值不同,但是当我从edittext中更改seekbar时,seekbar不会更新 osmeone能解释一下我该怎么做吗?我在getText和SetProgress方面遇到问题Java 使用EditText更新SeekBar,java,android,android-edittext,seekbar,Java,Android,Android Edittext,Seekbar,我正在开发一个BMI计算器,并添加了一个可选的SeekBar来更改edittext中的值。当我移动seekbar时,edittext中的值不同,但是当我从edittext中更改seekbar时,seekbar不会更新 osmeone能解释一下我该怎么做吗?我在getText和SetProgress方面遇到问题 public class MainActivity extends Activity { private RadioGroup rgsexo; EditText editPeso; Edi
public class MainActivity extends Activity {
private RadioGroup rgsexo;
EditText editPeso;
EditText editAltura;
TextView imcView;
SeekBar alterarAltura;
SeekBar alterarPeso;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editPeso = (EditText)findViewById(R.id.editPeso);
editAltura = (EditText)findViewById(R.id.editAltura);
imcView = (TextView)findViewById(R.id.imcView);
alterarAltura = (SeekBar)findViewById(R.id.alterarAltura);
alterarPeso = (SeekBar)findViewById(R.id.alterarPeso);
alterarAltura.setOnSeekBarChangeListener(alteraralturaListener);
alterarPeso.setOnSeekBarChangeListener(alterarpesoListener);
//This is where i'm having troubles
editAltura.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
double setAltura = (editAltura.getText.toString()) * .01d;
alterarAltura.setProgress(String.format("%.02f", setAltura).replace(',', '.'));
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
}
private OnSeekBarChangeListener alteraralturaListener = new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
double setAltura = (alterarAltura.getProgress()) * .01d;
// mostra na caixa o valor novo
editAltura.setText(String.format("%.02f", setAltura).replace(',', '.'));
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
};
你已经使用了双向函数,它会影响我执行的两个函数,这个程序我已经改变了这个程序中的小修改 您只需输入文本,它将自动更改搜索栏 您必须设置搜索栏的最大值,然后只有您可以更改搜索栏进度…一切顺利…
public class MainActivity extends Activity {
private EditText mTextEditer;
private SeekBar mSeekBar;
public float mProgressText;
public int mProgressValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextEditer = (EditText) findViewById(R.id.textEditer);
mSeekBar = (SeekBar) findViewById(R.id.seekBar);
mSeekBar.setMax(100);
mTextEditer.addTextChangedListener(new watcher());
mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public class watcher implements TextWatcher {
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
try {
if (s != null) {
mProgressText = Float.parseFloat(s.toString());
mProgressValue = (int) mProgressText;
mSeekBar.setProgress(mProgressValue);
}
} catch (Exception exception) {
mSeekBar.setProgress(0);
exception.printStackTrace();
}
}
}
}