我有多个SeekBars用户可以操作来更改文本字段中的各种值,我有这些值,所以他们会实时更新。
我无法弄清楚如何获取这些数字(我需要像添加,乘法等那样进行基本数学运算)到同时更新的新文本视图中。
我会尝试发布一些代码,但我是java,android甚至是这个网站的新手,所以当没有任何意义时不要感到惊讶。 :-P
跳到(我认为)是重要的代码。
SeekBar sbc = (SeekBar) findViewById(R.id.seekBar4);
final TextView tvc = (TextView) findViewById(R.id.textView10);
sbc.setMax(200);
sbc.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) {
tvc.setText(String.valueOf(progress-100));
}
});
//set up chance bar and text
TextView tvp = (TextView) findViewById(R.id.textView14);
tvp.setText(tvc.getText().toString());
正如你所看到的那样,我的搜索栏从-100到100 ......非常自豪那个(我花了很多时间去谷歌/研究lol)
还有tvp.setText(tvc.getText()。toString());只能拉出tvc的初始值
提前致谢,与此同时我会继续玩它。
答案 0 :(得分:1)
我不确定你为什么设置tvp和tvc显示相同的值,但如果你想让tvp动态更新以匹配tvc的值,那么你需要在Listener中移动你的最后一段代码,即:
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
tvc.setText(String.valueOf(progress-100));
TextView tvp = (TextView) findViewById(R.id.textView14);
tvp.setText(tvc.getText().toString());
}
或者更干净:
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
String progress = String.valueOf(progress-100)
tvc.setText(progress);
tvp.setText(progress); // move the findViewById outside this method, and put it with tvc
}
或者,如果您在更改tvc中的文本时遇到困难,这可能是因为您已将其声明为final
。如果是这种情况,请尝试将tvc作为您班级的非最终成员变量,即将其放在任何方法之外,在类的开头,如下所示:
public class MyClass extends Activity {
private TextView tvc;
...
修改强>
感谢额外的信息!尝试这样的事情:
public class MyClass extends Activity {
private TextView tvc;
private TextView tvd;
private TextView tvp;
... // somewhere here you need to get the TextViews from the Layout
... // missing out lots of code here and skipping straight to onProgressChanged for first seekBar
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
String progress1 = String.valueOf(progress-100)
tvc.setText(progress1);
String progress2 = tvd.getText().toString;
String result = resultOfSomeCalculationUsingTheInputs();
tvp.setText(result);
}
}
在你的其他SeekBar中你会做类似的事情(设置tvd的文本,获取tvc的文本,执行计算,将结果设置为tvp的文本)