使用SeekBar处理NullPointerException

时间:2017-09-21 19:16:27

标签: java android nullpointerexception seekbar android-seekbar

我的SeekBar有时会收到NullPointerException

我正在学习Android,但我无法找到解决此错误的正确方法。

我正在使用onStopTrackingTouch SeekBar的以下代码:

public void onStopTrackingTouch(SeekBar seekBar) {
                setScaledSize(seekBar.getProgress() / 100.f);
            }

功能setScaledSize显示如下:

private void setScaledSize(float scaledSize) {
        mSizeSeekBar.setProgress((int) (scaledSize * 100.0f));
        paintview.setDrawingScaledSize(scaledSize);
    }

我收到类似以下日志的错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.shayari.cardmaker.PaintView.setDrawingScaledSize(float)' on a null object reference
                                                                           at com.example.shayari.cardmaker.NameArt.setScaledSize(NameArt.java:767)
                                                                           at com.example.shayari.cardmaker.NameArt.access$200(NameArt.java:78)
                                                                           at com.example.shayari.cardmaker.NameArt$19.onStopTrackingTouch(NameArt.java:708)
                                                                           at android.widget.SeekBar.onStopTrackingTouch(SeekBar.java:121)
                                                                           at android.widget.AbsSeekBar.onTouchEvent(AbsSeekBar.java:772)
                                                                           at android.view.View.dispatchTouchEvent(View.java:10063)
                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2636)

如何防止此错误?

1 个答案:

答案 0 :(得分:1)

更改以下内容:

public void onStopTrackingTouch(SeekBar seekBar) {
    setScaledSize(seekBar.getProgress() / 100.f);
}

将分母从100.f更改为100.0f,如下所示:

public void onStopTrackingTouch(SeekBar seekBar) {
    setScaledSize(seekBar.getProgress() / 100.0f);
}