使用 Seekbar 更改 Fragment Class 中的 TextView 值
Change TextView value in a Fragment Class using Seekbar
我使用的是 Seekbar 库,所以当我拖动搜索器时,我希望文本视图使用来自搜索器的值进行更新,但不幸的是我的应用程序崩溃了。我收到一条错误消息 "resource not found on the 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);
}
});
解决方案:你不能像那样将 int 设置为 TextView,试试这个:
txtAmount.setText(Float.toString(min));
您使用的重载将寻找一个字符串资源标识符,在这种情况下不存在。这是 correct one that takes a CharSequence as an argument (string is a CharSequence).
很高兴知道: 如果您现在想知道 int 如何成为 setText 的参数,这很简单。在您的应用程序中,您可以有一个 strings.xml
文件来定义一组要在应用程序中使用的资源字符串:
<resources>
<string name="test">This is a test</string>
</resources>
定义后,您可以像这样在 TextView 上显示文本:
txtAmount.setText(R.string.test);
如果您将一个整数传递给 setText,android 期望该值是一个资源。系统正在尝试查找 id 等于 min 的资源。您需要将 min 转换为字符串。
因此,要使其正常工作,请将 txtAmount.setText((int) min);
更改为 txtAmount.setText(String.valueOf(min));
我使用的是 Seekbar 库,所以当我拖动搜索器时,我希望文本视图使用来自搜索器的值进行更新,但不幸的是我的应用程序崩溃了。我收到一条错误消息 "resource not found on the 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);
}
});
解决方案:你不能像那样将 int 设置为 TextView,试试这个:
txtAmount.setText(Float.toString(min));
您使用的重载将寻找一个字符串资源标识符,在这种情况下不存在。这是 correct one that takes a CharSequence as an argument (string is a CharSequence).
很高兴知道: 如果您现在想知道 int 如何成为 setText 的参数,这很简单。在您的应用程序中,您可以有一个 strings.xml
文件来定义一组要在应用程序中使用的资源字符串:
<resources>
<string name="test">This is a test</string>
</resources>
定义后,您可以像这样在 TextView 上显示文本:
txtAmount.setText(R.string.test);
如果您将一个整数传递给 setText,android 期望该值是一个资源。系统正在尝试查找 id 等于 min 的资源。您需要将 min 转换为字符串。
因此,要使其正常工作,请将 txtAmount.setText((int) min);
更改为 txtAmount.setText(String.valueOf(min));