有没有办法在for循环中加载多个URL

时间:2019-11-26 07:39:37

标签: android kotlin

我正在尝试使用ESP8266模块控制RGB LED。但是,如果我尝试一次控制多个ESP8266模块,则for循环仅适用于最后一个数组元素。

我已经尝试过Toast.makeText(applicationContext,i.toString(),Toast.LENGTH_SHORT).show() 如果我删除if语句,循环也只计数2。

吐司本身可以在AVD上正常工作,但不能在我的Galaxy S8上正常工作。 无法在我的手机和AVD上加载所有ip。 每次我尝试控制多个设备时,只有最后一个亮起。 这是我的RGBActivity,也许我丢失了一些东西。

iv_rgb.setOnTouchListener {
  _,
  event - >

  if (event.action == MotionEvent.ACTION_DOWN || event.action == MotionEvent.ACTION_MOVE) {

    bitmap = iv_rgb.drawingCache
    val pixel = bitmap.getPixel(event.x.toInt(), event.y.toInt())

    var r = (Color.red(pixel) * brightness) / 100
    var g = (Color.green(pixel) * brightness) / 100
    var b = (Color.blue(pixel) * brightness) / 100

    val hex = "#" + Integer.toHexString(pixel)

    //color_layout.setBackgroundColor(Color.rgb(r, g, b))
    //color_view.text = "RGB: $r, $g, $b, \nHex: $hex\n${Devices.deviceIP[0]}"
    //Toast.makeText(this@RGBActivity, Devices.deviceIP[1], Toast.LENGTH_SHORT).show()
    for (i in Devices.deviceIP.indices) {
      if (Devices.switch[i]) {
        wv_rgb.loadUrl("http://${Devices.deviceIP[i]}/?r${r.toString()}g${g.toString()}b${b.toString()}&")
        Toast.makeText(applicationContext, Devices.deviceIP[i], Toast.LENGTH_SHORT).show()
        //tv_color_rgb.text = "RGB: $r, $g, $b, \nHex: $hex\n${Devices.deviceIP[0]}"
        //sleep(100)

      }
      //wvRGB.loadUrl("http://${Devices.deviceIP[i]}/?r${r.toString()}g${g.toString()}b${b.toString()}&")
      //Toast.makeText(this@RGBActivity, Devices.deviceIP[i], Toast.LENGTH_SHORT).show()
      //sleep(100)

    }

  }
  true

}

2 个答案:

答案 0 :(得分:0)

如果“ wv_rgb”是WebView而不是loadUrl,则必须等待事件onPageFinished()(或onPageLoaded()忘记名称)。

答案 1 :(得分:0)

在循环内,您可以尝试使用onPageStarted()传递视图URL和收藏夹图标,然后调用onPageFinished()(如@blackapps所述)来传递视图和URL。或尝试使用常规的for循环(不确定,但值得一试)。

您还可以查看此链接https://android--code.blogspot.com/2016/03/android-detect-when-webview-finish.html