Java 使用EditText更新SeekBar

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

我正在开发一个BMI计算器,并添加了一个可选的SeekBar来更改edittext中的值。当我移动seekbar时,edittext中的值不同,但是当我从edittext中更改seekbar时,seekbar不会更新

osmeone能解释一下我该怎么做吗?我在getText和SetProgress方面遇到问题

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

}

}