另一个类中的SeekBar

问题描述 投票:0回答:1

我创建了一个显示距离的SeekBar。使用此距离是为了显示一个半径为特定距离的圆。

在我的onCreate中,我有以下几行:

SeekBar seekBar = findViewById(R.id.sb_radius);
seekBar.setOnSeekBarChangeListener(seekBarChangeListener);

然后,我使用它的类如下:

   private void Search_Map(float dpWidth, float dpHeight, Object Lat, Object Lon) {

    SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            // updated continuously as the user slides the thumb
            tvDistance.setText( "Progress: " + progress );
            Show_Map(dpWidth, dpHeight, Lat, Lon, progress*1000);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // called when the user first touches the SeekBar
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // called after the user finishes moving the SeekBar
        }
    };
} 

我的问题是它从不执行任何操作,因为我的onCreate说错了:

cannot resolve symbol seekBarChangeListener.

我如何在班级内部使用搜寻栏,但仍使侦听器正常工作?

谢谢

android android-seekbar
1个回答
0
投票

seekBar.setOnSeekBarChangeListener(seekBarChangeListener);中删除onCreate行并将其添加到Search_Map的末尾

class ClassName{
Seekerbar seekerbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_name);
        seekBar = findViewById(R.id.sb_radius);

}
private void Search_Map(float dpWidth, float dpHeight, Object Lat, Object Lon) {

    SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            // updated continuously as the user slides the thumb
            tvDistance.setText( "Progress: " + progress );
            Show_Map(dpWidth, dpHeight, Lat, Lon, progress*1000);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // called when the user first touches the SeekBar
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // called after the user finishes moving the SeekBar
        }
    };
    seekBar.setOnSeekBarChangeListener(seekBarChangeListener);

} 
}
© www.soinside.com 2019 - 2024. All rights reserved.