Задайте текст для целочисленного значения
Я хочу установить TextView
как значение целого числа, надеюсь, что так:
tv.setText(int)
Я попробовал это, и получаю эту ошибку.
Кроме того, мое целочисленное значение находится в другом классе
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.application, PID: 29603
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21168)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x1
at android.content.res.Resources.getText(Resources.java:312)
at android.widget.TextView.setText(TextView.java:4427)
Ответы
Ответ 1
Как правило,
tv.setText(String.valueOf(int));
Если значение находится внутри другого класса? Вы можете сделать getter для значения, которое вы хотите в этом классе:
public int getValue() {
return value;
}
Чтобы вы могли получить доступ к нему из другого:
НО, если вы установите TextView в int, он будет интерпретироваться как идентификатор ресурса Android. Если вы хотите, чтобы значение int как ваш текст (а не ресурс, на который оно указывает), сначала сделайте его строкой.
tv.setText(String.valueOf(theOtherClassInstance.getValue()));
EDIT Если ваш int firstResult
в соответствии с вашим комментарием ниже, то получатель становится:
public int getFirstResult() {
return firstResult;
}
Ответ 2
Выполняя setText (int), вы ссылаетесь на ресурс приложения из файлов XML, а не на само значение.
Чтобы установить правильное целое число, выполните следующие действия:
tv.setText(""+integer);
или лучшее решение:
tv.setText(String.valueOf(integer));