2013-09-26 29 views
1

我試圖通過從seekbar調用方法來設置一個值。Android - 如何通過調用seekbar方法定義值?

我調用getProgress()方法,它崩潰了應用程序。

我正在做一個擴展視圖的活動。

在MainActivity上設置seekbar值。

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

您seekbar未初始化。發佈堆棧跟蹤,你可能得到NPE – Raghunandan

+0

@Raghunandan對不起,但我怎麼能初始化seekbar? –

+0

發佈您的堆棧跟蹤。 – Raghunandan

回答

1
SeekBar bar = (SeekBar) findViewById(R.id.skbContrast); 

當您嘗試將它引用到視圖這將返回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); 

這不是全面解決方案只是一個想法,可以幫助您開始。

+0

嗯,我試過了,但我仍然無法完成工作...... –