1

我试图通过从 seekbar 调用方法来设置一个值。

我调用了 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);
        }
    }
}

有什么帮助吗?谢谢,对不起英语。

4

1 回答 1

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);

这不是万能的解决方案,只是帮助您入门的一个想法。

于 2013-09-26T19:06:16.667 回答