ProgressDialog показывает после завершения метода - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь заставить ProgressDialog появляться, пока приложение ищет IP-адрес в сети. В моих нынешних кодах, даже если инициализация ProgressDialog находится в начале, она показывает после того, что я жду, когда финиширует. Пожалуйста, посмотрите мой код.

 val clickListener = View.OnClickListener { view ->
        when(view.id) {
            R.id.button_upload -> {
                progressDialog = ProgressDialog(activity)
                progressDialog!!.setMessage("Looking for the server. Please wait...")
                progressDialog!!.setCancelable(false)
                progressDialog!!.show()
                if(findServer()) {
                   Log.i("TAG", "FOUND")
                } else {
                   Log.i("TAG", "NOT FOUND")
                }
            }
        }
    } 

    private fun findServer(): Boolean {
        if(canPingServer()) {
            Toast.makeText(context, "We are connected to the server server", Toast.LENGTH_LONG).show()
            gView.button_upload.setText("Upload")
            gView.button_upload.isEnabled = true
            progressDialog!!.dismiss()
            return true
        } else {
            Toast.makeText(context, "We cannot connect to the server.", Toast.LENGTH_LONG).show()
            gView.button_upload.setText("Server not found")
            gView.button_upload.isEnabled = false
            progressDialog!!.dismiss()
            return false
        }
    }

private fun canPingServer(): Boolean {
        val runtime = Runtime.getRuntime()
        try {
            val mIpAddrProcess = runtime.exec("/system/bin/ping -c 1 192.168.1.4")
            val mExitValue = mIpAddrProcess.waitFor()
            Log.i("TAG","mExitValue $mExitValue")
            return mExitValue == 0
        } catch (ignore: InterruptedException) {
            ignore.printStackTrace()
            Log.i("TAG"," Exception:$ignore")
        } catch (e: IOException) {
            e.printStackTrace()
            Log.i("TAG"," Exception:$e")
        }
        return false
    }

Я считаю, что для этого мне нужно создать AsyncTask<Void, Void, String>, но дело в том, что этот фрагмент унаследован от другого класса, уже как

class UploadFragment : BaseFragment() {.....}

Если у вас есть разъяснения или мне нужно отредактировать свой вопрос, чтобы вы могли мне лучше помочь, пожалуйста, сообщите мне. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...