使用Seekbar更改Fragment类中的TextView值

时间:2017-08-28 20:56:20

标签: java android seekbar android-seekbar

我正在使用Seekbar库,因此当我拖动搜索引擎时,我希望使用搜索者的值更新textview,但不幸的是我的应用程序崩溃了。我收到一条错误,上面写着"在TextView"上找不到资源。 代码如下:

RangeSeekBar seekBar1;
seekBar1 = (RangeSeekBar)rootView.findViewById(R.id.seekBar);

seekBar1.setValue(10);
seekBar1.setOnRangeChangedListener(new RangeSeekBar.OnRangeChangedListener() {
        @Override
        public void onRangeChanged(RangeSeekBar view, float min, float max, boolean isFromUser) {
            seekBar1.setProgressDescription((int)min+"%");
            TextView txtAmount;
            txtAmount = (TextView)rootView.findViewById(R.id.txtAmount);
            txtAmount.setText((int) min);
        }
});

2 个答案:

答案 0 :(得分:2)

解决方案:你不能像这样设置int到TextView,试试这个:

txtAmount.setText(Float.toString(min));

您正在使用的重载将查找字符串资源标识符,在这种情况下不存在。这里是以CharSequence作为参数的correct onestring is a CharSequence)。

很高兴知道:如果您现在想知道int如何成为setText的参数,那么它非常简单。在您的应用中,您可以拥有一个strings.xml文件,用于定义要在应用程序中使用的一组资源字符串:

<resources>
    <string name="test">This is a test</string>
</resources>

通过定义,您可以在TextView上显示文本,如下所示:

txtAmount.setText(R.string.test);

答案 1 :(得分:0)

如果将整数传递给setText,则android期望该值为资源。系统正在尝试查找id等于min的资源。您需要将min转换为字符串。

为了让它正常运行,请将txtAmount.setText((int) min);更改为txtAmount.setText(String.valueOf(min));