Progam остановлен во время выполнения условия - PullRequest
0 голосов
/ 22 октября 2019
   if (TextUtils.isEmpty(value)){
                        Toast.makeText(this, "Silahkan Isi Jumlah", Toast.LENGTH_SHORT).show()
                        return@setOnClickListener
                    }

конкретный код

btnharga.setOnClickListener {
            if (spinner.selectedItem.toString().equals("Ukuran")){
                Toast.makeText(this, "Silahkan Isi Ukuran", Toast.LENGTH_SHORT).show()
            }
            else if (spinner.selectedItem.toString().equals("44")){
                if (spinner2.selectedItem.toString().equals("Jenis Laminasi")){
                    Toast.makeText(this, "Silahkan Isi Laminasi", Toast.LENGTH_SHORT).show()
                }
                else if (spinner2.selectedItem.toString().equals("Glossy")){
                    val total : Int
                    val totall : String
                    val value = editText.getText().toString()
                    val finalValue = Integer.parseInt(value)
                    if (TextUtils.isEmpty(value)){
                        Toast.makeText(this, "Silahkan Isi Jumlah", Toast.LENGTH_SHORT).show()
                        return@setOnClickListener
                    }
                    else if (finalValue < 5){
                        total = finalValue * 3500
                        totall = total.toString()
                        editText2.setText(totall)
                        spinner.isEnabled = false
                        spinner2.isEnabled = false
                        editText.isEnabled = false
                        editText2.isEnabled = false
                    }

почему мое приложение закрылось при запуске этой программы ??

Журнал ошибок = 1007 *

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: app.inisiator.com, PID: 4717
    java.lang.NumberFormatException: For input string: ""
        at java.lang.Integer.parseInt(Integer.java:620)
        at java.lang.Integer.parseInt(Integer.java:643)
        at app.inisiator.com.RequestPinActivity$onCreate$1.onClick(RequestPinActivity.kt:83)
        at android.view.View.performClick(View.java:6310)
        at android.view.View$PerformClick.run(View.java:24970)
        at android.os.Handler.handleCallback(Handler.java:794)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:176)
        at android.app.ActivityThread.main(ActivityThread.java:6662)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

Ответы [ 4 ]

1 голос
/ 22 октября 2019

Эта проблема возникает из-за того, что вы пытаетесь проанализировать строку (пустую строку), которая не в состоянии проанализировать целое число.

Переместить команду Integer.parseInt к проверке текста ниже

И не забудьте перехватить NumberFormatException при разборе числа из текста

if (TextUtils.isEmpty(value)){
    Toast.makeText(this, "Silahkan Isi Jumlah", Toast.LENGTH_SHORT).show()
    return@setOnClickListener
}

try {
   val finalValue = Integer.parseInt(value)
   if (finalValue < 5){
       total = finalValue * 3500
       totall = total.toString()
       editText2.setText(totall)
       spinner.isEnabled = false
       spinner2.isEnabled = false
       editText.isEnabled = false
       editText2.isEnabled = false
   } 
} catch (ex: NumberFormatException) {
    //Add log for parsing error of do something else
}
0 голосов
/ 22 октября 2019

Это вызывает NumberFormatException -

val value = editText.getText().toString()
val finalValue = Integer.parseInt(value)        //here value is "" empty 

пустая строка или недопустимая строка не может быть преобразована в Int.

Поэтому используйте условие if перед синтаксическим анализом строки в int -

if(!value.isNullOrEmpty()){
//parse here
}

или используйте try / catch с NumberFormatException

0 голосов
/ 22 октября 2019

Ваш код имеет следующую логику:

val finalValue = Integer.parseInt(value)
if (TextUtils.isEmpty(value)){
    ...
} else if (finalValue < 5){
    ...
}

Итак, если value - пустая строка, и вы, очевидно, ожидаете, что это может быть, parseInt сгенерирует это NumberFormatException: For input string: "" исключение.

Вам нужно проверить наличие пустой строки перед тем, как попытаться вызвать parseInt.

if (TextUtils.isEmpty(value)){
    ...
} else {
    val finalValue = Integer.parseInt(value)
    if (finalValue < 5){
        ...
    }
}
0 голосов
/ 22 октября 2019

Вы разбираете пустую строку в целое число, поэтому ее выдает исключение

Следующее верно:

String a = 50;
int number = Integer.parseInt(a);

И это ошибка, потому что пустая строка не может быть преобразована в целое число:

String a = "";
int number = Integer.parseInt(a);

В вашем коде:

val finalValue = Integer.parseInt(value); 

измените эту строку, проверьте, являются ли значения пустыми или нет перед синтаксическим анализом, а затем выполните синтаксический анализ, только если он не пустой

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