androidkotlinseekbar

How To get value of SeekBar and use it on another class or method


I'm new in Kotlin and I want to use three Seekbar on my app for RGB control;
I want to set seekBarManger function to manage my seekbar on SeekBarManger class and use seekbar.progress value on other class but I cant get value of my seekbar.
the Toast is Show but I want to use the value of seekbar.progrees in other method and class. please help me..!!!! this is my seekbar class :


class SeekBarManager()  {


}

fun seekBarManage(context: Context, seekBar: SeekBar) {



   seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {


       override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) { }

       override fun onStartTrackingTouch(p0: SeekBar?) {}

       override fun onStopTrackingTouch(p0: SeekBar?) {


           val result = seekBar.progress

           Toast.makeText(context, "Progress is: $result%", Toast.LENGTH_SHORT).show()


       }


   })

and this is my MainActivity :

open class MainActivity : AppCompatActivity()  {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        val seekRed  = findViewById<SeekBar>(R.id.seekBar_red)
        val seekGreen = findViewById<SeekBar>(R.id.seekBar_green)
        val seekBlue = findViewById<SeekBar>(R.id.seekBar_blue)
        
        val seekEndRed = seekBarManage(this , seekRed)
        val seekEndGreen = seekBarManage(this , seekGreen)
        val seekEndBlue = seekBarManage(this , seekBlue)
     
       

the Toast is Show but I want to use the value of seekbar.progrees in other method and class


Solution

  • the easiest way is to use a companion object in your Main class and just call a method and pass your seek bar object like below :

    open class MainActivity : AppCompatActivity() {
    
        companion object {
            fun getSeekBarProgress(context: Context, seekBar: SeekBar) {
                val result = seekBar.progress
                Toast.makeText(context, "Progress is: $result%", Toast.LENGTH_SHORT).show()
    
        }
    }
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
    
            val seekRed = findViewById<SeekBar>(R.id.seekBar_red)
            val seekGreen = findViewById<SeekBar>(R.id.seekBar_green)
            val seekBlue = findViewById<SeekBar>(R.id.seekBar_blue)
    
            val seekEndRed = seekBarManage(this, seekRed)
            val seekEndGreen = seekBarManage(this, seekGreen)
            val seekEndBlue = seekBarManage(this, seekBlue)
        }
    }
    

    and SeekBarManager class :

    class SeekBarManager() {
    
    
    }
    
        fun seekBarManage(context: Context, seekBar: SeekBar) {
    
    
        seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
    
    
            override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {}
    
            override fun onStartTrackingTouch(p0: SeekBar?) {}
    
            override fun onStopTrackingTouch(p0: SeekBar?) {
    
                MainActivity.getSeekBarProgress(context, seekBar)
    
            }
    
    
        })
        }