java - 使用 EditText 更新 SeekBar

标签 java android android-edittext seekbar

我正在开发一个 BMI 计算器,并添加了一个可选的 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();
        }
    }

}

}

关于java - 使用 EditText 更新 SeekBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185421/

相关文章:

java - 如何在java中从单个字符串创建集合<String>?

security - 覆盖应用程序的 US_export_policy 和 local_policy jar

android - List 中的 TextView 被截断

java - 将字符串从 EditText 转换为整数会导致应用程序在启动前停止工作

android - 如何禁用 EditText 的自动完成和自动更正

java - 硬币找零 - 寻找最大数量

java - 具有 2 个用户角色的 tomcat 上的 j_security_check

用于资金处理的 Android 应用程序

android - 使用缩放支持使 WebView 的内容适合屏幕

android - inputType 不隐藏密码