Индикатор выполнения не отображается — Котлин

#android #kotlin #mobile #android-progressbar

Вопрос:

Я продолжал получать ошибку при отображении индикатора выполнения. Вот код для XML

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ProgressBar
        android:id="@ id/progress_bar"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="150dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>
 

Затем в моем коде kotlin я продолжал получать ошибку при отображении индикатора выполнения

OnCreate()

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_splash_screen)

        init()
    }
 

showRegisterLayout() — выделенная часть-это моя ошибка

 private fun showRegisterLayout() {
        val builder = AlertDialog.Builder(this,R.style.DialogTheme)
        val itemView = LayoutInflater.from(this).inflate(R.layout.layout_register,null)

        val edt_first_name = itemView.findViewById<View>(R.id.edt_first_name) as TextInputEditText
        val edt_last_name = itemView.findViewById<View>(R.id.edt_last_name) as TextInputEditText
        val edt_phone_number = itemView.findViewById<View>(R.id.edt_phone_number) as TextInputEditText

        val btn_continue = itemView.findViewById<View>(R.id.btn_register) as Button

        //set_data
        if(FirebaseAuth.getInstance().currentUser!!.phoneNumber != null amp;amp;
            !TextUtils.isDigitsOnly(FirebaseAuth.getInstance().currentUser!!.phoneNumber))
            edt_phone_number.setText(FirebaseAuth.getInstance().currentUser!!.phoneNumber)

        //view
        builder.setView(itemView)
        val dialog = builder.create()
        dialog.show()

        //Event
        btn_continue.setOnClickListener {
            if(TextUtils.isDigitsOnly(edt_first_name.text.toString())){
            Toast.makeText(this@SplashScreenActivity,"Enter your First Name", Toast.LENGTH_SHORT).show()
            return@setOnClickListener
            }
            else if(TextUtils.isDigitsOnly(edt_last_name.text.toString())){
                Toast.makeText(this@SplashScreenActivity,"Enter your Last Name", Toast.LENGTH_SHORT).show()
                return@setOnClickListener
            }
            else if(TextUtils.isDigitsOnly(edt_phone_number.text.toString())){
                Toast.makeText(this@SplashScreenActivity,"Enter your Phone Number", Toast.LENGTH_SHORT).show()
                return@setOnClickListener
            }
            else
            {
                val model = DriverInfoModel()
                model.firstName = edt_first_name.text.toString()
                model.lastName = edt_last_name.text.toString()
                model.phoneNumber = edt_phone_number.text.toString()

                model.rating = 0.0

                driverInfoRef.child(FirebaseAuth.getInstance().currentUser!!.uid)
                    .setValue(model)
                    .addOnFailureListener{ e ->
                        Toast.makeText(this@SplashScreenActivity,"" e.message, Toast.LENGTH_SHORT).show()
                        dialog.dismiss()
                        progress_bar.visibility = View.GONE
                    }
                    .addOnSuccessListener {
                        Toast.makeText(this@SplashScreenActivity,"Registered Successfully", Toast.LENGTH_SHORT).show()
                        dialog.dismiss()
                        progress_bar.visibility = View.GONE
                    }
            }
        }
    }
 

progress_bar.visibility = View.GONE это моя ошибка progress_bar , что он продолжал гореть красным. Я пытался это исправить, но безрезультатно. Надеюсь, кто-нибудь сможет мне помочь 🙂

Комментарии:

1. Вы не инициализировали progress_bar … что-то вроде val progress_bar = itemView.findViewById<ProgressBar>(R.id.progress_bar)

Ответ №1:

Если вы используете синтетическую привязку, убедитесь, что вы импортировали progress_bar из правильного файла xml-макета.

В противном случае правильно инициализируйте progress_bar с помощью findViewById.

Я рекомендую использовать привязку просмотра, которая более безопасна.