Android - 如何通过调用seekbar方法定义值?

时间:2013-09-26 18:55:17

标签: android view draw 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);
        }
    }
}

有任何帮助吗?谢谢,对不起英语。

1 个答案:

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

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