Что я делаю, так это «запрашиваю» число в километрах, и как только вы нажимаете кнопку, чтобы преобразовать это число в сантиметры и показать результат в TextView, но когда вы нажимаете кнопку, приложение закрывается.

Я использую Samsung Galaxy A70

Версия Android: 10

MainActivity.java

public void calcular(View v){
        EditText text = findViewById(R.id.pt_entrada);
        input = Integer.parseInt(text.getText().toString());
        valor = input * cm;
        Log.d("info", String.valueOf(valor)); // This actually gives me de log on the Logcat tab.
        TextView tv = (TextView)findViewById(R.id.tv_pantalla); // But once the app arrives here, it crashes.
        tv.setText(valor);
    }

Activity_main.xml

<Button
        android:id="@+id/b_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:onClick="calcular"
        android:text="@string/calcular"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toEndOf="@+id/pt_entrada"
        app:layout_constraintTop_toTopOf="@+id/pt_entrada" />

    <TextView
        android:id="@+id/tv_pantalla"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pt_entrada" />

    <EditText
        android:id="@+id/pt_entrada"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="8dp"
        android:autofillHints="@string/kmacm"
        android:ems="10"
        android:hint="@string/kmacm"
        android:inputType="numberDecimal"
        app:layout_constraintEnd_toStartOf="@+id/b_send"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Это ошибка, отображаемая на вкладке Logcat:

Process: com.example.conversor, PID: 12602
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414)
        at android.view.View.performClick(View.java:7862)
        at android.widget.TextView.performClick(TextView.java:15004)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7831)
        at android.view.View.access$3600(View.java:879)
        at android.view.View$PerformClick.run(View.java:29359)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8167)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
        at android.view.View.performClick(View.java:7862) 
        at android.widget.TextView.performClick(TextView.java:15004) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
        at android.view.View.performClickInternal(View.java:7831) 
        at android.view.View.access$3600(View.java:879) 
        at android.view.View$PerformClick.run(View.java:29359) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:8167) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 
     Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x64
        at android.content.res.Resources.getText(Resources.java:402)
        at android.widget.TextView.setText(TextView.java:6942)
        at com.example.conversor.MainActivity.calcular(MainActivity.java:29)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409) 
        at android.view.View.performClick(View.java:7862) 
        at android.widget.TextView.performClick(TextView.java:15004) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
        at android.view.View.performClickInternal(View.java:7831) 
        at android.view.View.access$3600(View.java:879) 
        at android.view.View$PerformClick.run(View.java:29359) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:8167) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 
2021-10-11 17:20:20.010 12602-12602/com.example.conversor I/Process: Sending signal. PID: 12602 SIG: 9
-2
KevinDoUrden 11 Окт 2021 в 18:09

2 ответа

Лучший ответ

Вы передаете int в качестве аргумента, когда делаете

tv.setText(valor);

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

tv.setText(String.valueOf(valor));
0
Babd_Catha 11 Окт 2021 в 15:20

Проще просто объединить его с пустой строкой.

                  tv.setText(valor + "");
0
Rabi Rafique 11 Окт 2021 в 18:54