我试图通过从搜索栏调用方法来设置值。
我调用了方法getProgress(),它崩溃了应用程序。
我在一个扩展View的活动中这样做。
搜索栏值在MainActivity上设置。
public class Draw extends View
{
public Draw(Context context)
{
super(context);
}
Paint prop = new Paint();
Random color = new Random();
SeekBar bar = (SeekBar) findViewById(R.id.skbContrast);
int value = bar.getProgress();// it crashes here
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
int width = getWidth();
int height = getHeight();
int oriwidth = 0;
int oriheight = 0;
for (int x = 0; x < 20; x++)
{
int red = color.nextInt(value);
int green = color.nextInt(value);
int blue = color.nextInt(value);
prop.setARGB(255, red, green, blue);
canvas.drawRect(oriwidth += 10, oriheight += 10, width -= 10, height -= 10, prop);
}
}
}
有任何帮助吗?谢谢,对不起英语。
答案 0 :(得分:1)
SeekBar bar = (SeekBar) findViewById(R.id.skbContrast);
当您尝试将其引用到View中时,这将返回null。
相反,你应该采取以下方法。
将以下语句移至您的活动。
SeekBar bar = (SeekBar) findViewById(R.id.skbContrast);
int value = bar.getProgress();
在视图类中创建一个方法。
public void setSeekBarValue(long seekBarValue)
{
this.seekBarValue=seekBarValue;
}
每当您想要传递值以查看以下代码段的写入时,都可以从MainActivity中获取。
SeekBar bar = (SeekBar) findViewById(R.id.skbContrast);
int value = bar.getProgress();
viewObject.setSeekBarValue(value);
这不是一个全面的解决方案,只是一个帮助您入门的想法。