Недействительная положительная кнопка при выполнении условий - PullRequest
0 голосов
/ 24 октября 2018

В моем приложении у меня есть всплывающее окно с полем EditText.Если есть еще одна точка, я хочу сделать недействительной положительную кнопку, то есть сделать ее серой и неспособной щелкнуть.Я посмотрел на код Java и попробовал несколько решений, но я не понял, как заставить его работать.Мой код:

 fun dialogBuilder(){
        var dots = 0
        lateinit var inputText: String
        val builder = AlertDialog.Builder(this)
        builder.setTitle(getString(R.string.moneyStatus))
        val input = EditText(this)
        input.inputType = InputType.TYPE_NUMBER_FLAG_DECIMAL or InputType.TYPE_NUMBER_FLAG_SIGNED
        input.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
        input.addTextChangedListener(object : TextWatcher {

            override fun afterTextChanged(s: Editable) {}

            override fun beforeTextChanged(s: CharSequence, start: Int,
                                           count: Int, after: Int) {
            }

            override fun onTextChanged(s: CharSequence, start: Int,
                                       before: Int, count: Int) {

                val length = s.length
                if (length > 0){
                    for (i in 0..length){
                        if (i < length) {
                            if (s[i] == '.') {
                                dots += 1
                            }
                        }
                    }
            }
            }
        })
        builder.setView(input)
        builder.setPositiveButton("OK") {
            dialog, which -> inputText = input.text.toString()
            money.setText(inputText)
        }
        builder.setNegativeButton(getString(R.string.cancel)) {
            dialog, which -> dialog.cancel()
        }
        if (dots > 1){
            //gray out "OK" button
        }
        builder.show()
    }
}

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Пока я гуглил, я наткнулся на этот вопрос, который должен ответить на ваш.

Как отключить / включить диалог отрицательных положительных кнопок?

Я скомпилировалкод в kotlin, и он, кажется, работает, или, по крайней мере, компилируется: D

fun dialogStuff() {
    val builder = AlertDialog.Builder(this)
    builder.setIcon(android.R.drawable.ic_dialog_info)
    builder.setTitle("Alert dialog title")
    builder.setMessage("This is the example code snippet to disable button if edittext attached to dialog is empty.")
    builder.setPositiveButton("PositiveButton"
    ) { arg0, arg1 ->
        // DO TASK
    }
    builder.setNegativeButton("NegativeButton"
    ) { arg0, arg1 ->
        // DO TASK
    }
    val input = EditText(this)
    val lp = LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT)
    input.layoutParams = lp
    builder.setView(input)
    val dialog = builder.create()
    dialog.show()
    (dialog as AlertDialog).getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = false
    input.addTextChangedListener(object : TextWatcher {
        override fun onTextChanged(s: CharSequence, start: Int, before: Int,
                                   count: Int) {
        }

        override fun beforeTextChanged(s: CharSequence, start: Int, count: Int,
                                       after: Int) {
        }

        override fun afterTextChanged(s: Editable) {
            // Check if edittext is empty
            dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = !TextUtils.isEmpty(s)

        }
    })
}
0 голосов
/ 24 октября 2018

Чтобы отключить кнопку:

 mButtonToggle.setEnabled( false );

Чтобы включить кнопку:

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