Как я могу получить int из EditText? Я попробовал этот алгоритм ниже, но Android Studio возвращает ошибку «»

#android #android-edittext

#Android #android-edittext

Вопрос:

Мой Java-код и мой xml-код. Пожалуйста, что я делаю не так?

  // Get a value from a editText
                EditText editTextA = (EditText) findViewById(a_edit_text);
                String variableA = editTextA.getText().toString(); //this will get a string
                int a =Integer.parseInt(variableA); //this will get a no from the string and casting in integer
                Log.v("DiagnosticoActivity", "Number a: "   a);

<EditText
                android:id="@ id/a_edit_text"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="Insira a"
                android:inputType="number"
                android:padding="36dp" />

10-10 11:27:34.916 26195-26195/matheussfdb.dptdedoencas E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: matheussfdb.dptdedoencas, PID: 26195
                                                                          java.lang.RuntimeException: Unable to start activity ComponentInfo{matheussfdb.dptdedoencas/matheussfdb.dptdedoencas.DiagnosticoActivity}: java.lang.NumberFormatException: Invalid int: ""
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
                                                                              at android.app.ActivityThread.access$900(ActivityThread.java:157)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:148)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5527)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
                                                                           Caused by: java.lang.NumberFormatException: Invalid int: ""
                                                                              at java.lang.Integer.invalidInt(Integer.java:138)
                                                                              at java.lang.Integer.parseInt(Integer.java:358)
                                                                              at java.lang.Integer.parseInt(Integer.java:334)
                                                                              at matheussfdb.dptdedoencas.DiagnosticoActivity.onCreate(DiagnosticoActivity.java:23)
                                                                              at android.app.Activity.performCreate(Activity.java:6272)
                                                                              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
                                                                              at android.app.ActivityThread.access$900(ActivityThread.java:157) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                              at android.os.Looper.loop(Looper.java:148) 
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5527) 
                                                                              at java.lang.reflect.Method.invoke(Native Method) 
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620 

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

1. Добавьте сообщение об ошибке

2. ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: matheussfdb.dptdedoencas, PID: 26195 java.lang.RuntimeException: не удается запустить activity ComponentInfo{matheussfdb.dptdedoencas/matheussfdb .

3. пожалуйста, добавьте полную трассировку стека к вашему вопросу, используя команду edit .

4. Йенс, ты можешь мне помочь? Вам нужна дополнительная информация?

5. Два способа: либо проверить наличие пустой строки, либо перехватить исключение. Ваша ошибка «Вызвана: java.lang.NumberFormatException: недопустимый int: «»‘

Ответ №1:

 int a = 0;
try {
    a = Integer.parseInt(variableA); // will only work on numeric entries
} catch (NumberFormatException e) {
    // handle incorrect text entry here
}
// a will be 0 if exception occurred
  

Йенс ответил на это после моего комментария

Ответ №2:

Спасибо, ребята! Это сработало, код выглядит так, но Log.V не работает, когда я вводю ввод в свой текст edti, как исправить?

     // Get a value from a editText
    EditText editTextA = (EditText) findViewById(a_edit_text);
    String variableA = editTextA.getText().toString(); //this will get a string
    int a = 0;
    try {
        a = Integer.parseInt(variableA); // will only work on numeric entries
    } catch (NumberFormatException e) {
        // handle incorrect text entry here
    } // a will be 0 if exception occurred

    Log.v("DiagnosticoActivity", "Number a: "   a);        
  

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

1. Я хотел бы показать свой ввод в редактируемом тексте в log.v

2. Вы не должны добавлять новый вопрос к своему ответу

3. никогда не используйте блок catch таким образом. Добавьте по крайней мере оператор журнала в catchblock

4. Используйте отладчик, чтобы выяснить, что произошло

5. Вы используете Log.v, и ваш logcat может быть настроен не на отображение всех подробных выходных данных. Вместо этого попробуйте Log.d …