Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ';如果条件为';在seekbar中,onprogresschanged未执行_Android_Kotlin_Seekbar - Fatal编程技术网

Android ';如果条件为';在seekbar中,onprogresschanged未执行

Android ';如果条件为';在seekbar中,onprogresschanged未执行,android,kotlin,seekbar,Android,Kotlin,Seekbar,当seekBar侦听器中的“If”条件满足时,我想更改textview上的图像和文本,但该条件中的代码不会执行。 我尝试了不同的方法,比如我放置了硬编码的值,比如if(progress==100){},但即使这样也不会执行。请指导我现在该做什么。提前谢谢 open class MainActivity : AppCompatActivity() { var imageItem: MutableList<String> = mutableListOf<String>

当seekBar侦听器中的“If”条件满足时,我想更改textview上的图像和文本,但该条件中的代码不会执行。 我尝试了不同的方法,比如我放置了硬编码的值,比如if(progress==100){},但即使这样也不会执行。请指导我现在该做什么。提前谢谢

open class MainActivity : AppCompatActivity() {
    var imageItem: MutableList<String> = mutableListOf<String>()
    var timeItem: MutableList<Int> = mutableListOf<Int>()
    //    var slideTime: MutableList<Int> = mutableListOf<Int>(2000, 10000, 11000)
    var music: String? = null
    var gson: Gson = GsonBuilder().create()
    var mp: MediaPlayer? = null
    val retrofit =
        Retrofit.Builder()
            .baseUrl("http://165.22.214.137:8002/")
            .addConverterFactory(GsonConverterFactory.create(gson))
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .build()
    val jsonPlaceHolderAPI = retrofit.create(
        JsonPlaceHolderAPI::class.java
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        imageItem.add(R.drawable.ic_launcher_background.toString())
        imageSlider.setSliderTransformAnimation(SliderAnimations.FADETRANSFORMATION);
        getPosts()
        imageSlider.setOnIndicatorClickListener(DrawController.ClickListener { position ->
            imageSlider.setCurrentPagePosition(
                position
            )
        })
        button.setOnClickListener {
            if (mp!!.isPlaying) {
                mp!!.pause()
                button.setBackgroundResource(R.drawable.ic_play_circle_outline_black_24dp)
            } else {
                mp!!.start()
                button.setBackgroundResource(R.drawable.ic_pause_circle_outline_black_24dp)
            }
        }

    }

    //get Json data
    fun getPosts(): List<String> {
        val call = jsonPlaceHolderAPI.imagesDetails
        var n = 0
        call.enqueue(object : Callback<List<ImagePost>> {
            override fun onResponse(
                call: Call<List<ImagePost>>,
                response: Response<List<ImagePost>>
            ) {
                if (!response.isSuccessful) {
                    code.setText("Code:" + response.message())
                }
                val posts = response.body()!!
                for (post in posts) {
                    var content = ""
                    n = post.media.size
                    for (i in 0 until n - 1) {
                        imageItem.add(post.media[i].image)
                        timeItem.add(post.media[i].ms)
                    }
                    music = post.audio
                }

                mp = MediaPlayer()
                try {

                    var mytracking = SongTrack(timeItem)
                    mytracking.start()

                    mp!!.setDataSource(music)
                    mp!!.prepare()
                    seekBar.max = mp!!.duration
                    mp!!.start()
                } catch (ex: Exception) {
                }
                val adapter = SliderAdapterExample(this@MainActivity, imageItem, n)
                imageSlider.setSliderAdapter(adapter)

            }

            override fun onFailure(call: Call<List<ImagePost>>, t: Throwable) {
                code.setText(t.message)
            }
        })
        var flag:Boolean = true
        seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {

                for(i in timeItem) {
                    if (progress == i) {
                        imageSlider.currentPagePosition = imageSlider.currentPagePosition + 1
                        code.setText("condition met")
                    }
                }
            }

            override fun onStartTrackingTouch(seekBar: SeekBar?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onStopTrackingTouch(seekBar: SeekBar?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

        })

        return imageItem
    }


    inner class SongTrack(timeItem: MutableList<Int>) : Thread() {
        override fun run() {
            while (true) {
                try {
                    sleep(100)
                } catch (ex: Exception) {
                }
                runOnUiThread {
                    if (mp != null) {
                        seekBar.progress = mp!!.currentPosition
                    }
                }
            }
        }
    }

}
openclass MainActivity:AppCompatActivity(){
var-imageItem:MutableList=mutableListOf()
var timeItem:MutableList=mutableListOf()
//var slideTime:MutableList=mutableListOf(2000,10000,11000)
var music:String?=null
var gson:gson=GsonBuilder().create()
变量mp:MediaPlayer?=null
val改造=
改装.Builder()
.baseUrl(“http://165.22.214.137:8002/")
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
val jsonPlaceHolderAPI=reformation.create(
JSONAPI::class.java
)
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
添加(R.drawable.ic_launcher_background.toString())
imageSlider.SetSliderTransformation(SliderImation.FADETRANSFORMATION);
getPosts()
imageSlider.setOnIndicatorClickListener(DrawController.ClickListener{position->
imageSlider.setCurrentPagePosition(
位置
)
})
button.setOnClickListener{
如果(mp!!.isplay){
mp!!.pause()
按钮。设置背景资源(R.可绘制。ic\播放\圆圈\轮廓\黑色\ 24dp)
}否则{
mp!!.start()
按钮。设置背景资源(右可绘制。ic\暂停\圆圈\轮廓\黑色\ 24dp)
}
}
}
//获取Json数据
fun getPosts():列表{
val call=jsonPlaceHolderAPI.imagesDetails
var n=0
排队(对象:Callback{
覆盖响应(
呼叫:呼叫,,
答复:答复
) {
如果(!response.issucessful){
code.setText(“代码:+response.message())
}
val posts=response.body()!!
用于(以职位为单位的职位){
var content=“”
n=post.media.size
对于(从0到n-1的i){
imageItem.add(post.media[i].image)
timeItem.add(post.media[i].ms)
}
音乐=后期音频
}
mp=MediaPlayer()
试一试{
var mytracking=SongTrack(时间项)
mytracking.start()
mp!!.setDataSource(音乐)
准备
seekBar.max=mp!!.duration
mp!!.start()
}捕获(例如:异常){
}
val适配器=滑块适配器示例(this@MainActivity,imageItem,n)
imageSlider.setSliderAdapter(适配器)
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
code.setText(t.message)
}
})
变量标志:布尔值=true
seekBar.setonseekbarchaneglistener(对象:seekBar.onseekbarchaneglistener{
重写已更改的进程(seekBar:seekBar?,进程:Int,fromUser:Boolean){
对于(i在时间项中){
如果(进度==i){
imageSlider.currentPagePosition=imageSlider.currentPagePosition+1
代码.setText(“满足条件”)
}
}
}
在开始跟踪触摸时覆盖乐趣(seekBar:seekBar?){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
覆盖顶部跟踪触摸屏(seekBar:seekBar?){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
})
返回图像项
}
内部类歌曲曲目(timeItem:MutableList):Thread(){
覆盖趣味跑(){
while(true){
试一试{
睡眠(100)
}捕获(例如:异常){
}
runOnUiThread{
如果(mp!=null){
seekBar.progress=mp!!.currentPosition
}
}
}
}
}
}

找到了解决方案!!我刚把代码改成这个。我认为检查和更改图像需要时间,所以我提供了一个间隔。现在它正在按要求作出反应。谢谢你们的努力

   seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                    for (i in 0 until imageItem.size-1)
                    if (progress > timeItem[i] && progress < timeItem[i+1] && i<timeItem.size-1) {
                        imageSlider.currentPagePosition = i+1
                    }else if(progress>timeItem[timeItem.size-1]){
                        imageSlider.currentPagePosition =timeItem.size-1
                    }else if(progress==mp!!.duration){
                        seekBar!!.progress=0
                    }

            }
seekBar.setonseekbarchaneglistener(对象:seekBar.onseekbarchaneglistener{
重写已更改的进程(seekBar:seekBar?,进程:Int,fromUser:Boolean){
用于(i在0中,直到imageItem.size-1)
if(进度>时间项[i]&进度<时间项[i+1]&itimeItem[timeItem.size-1]){
imageSlider.currentPagePosition=timeItem.size-1
}否则如果(进度==mp!!.duration){
seekBar!!.progress=0
}
}

检查您的时间项数组大小,如果它大于或不大于0。@NehalGodhasara我通过在textView上打印其值来检查它,它有11个元素。我通过单击按钮尝试了相同的代码“imageSlider.currentPagePosition=imageSlider.currentPagePosition+1”,它可以工作,但在if条件下不工作。