Установить текст в целочисленное значение - PullRequest
15 голосов
/ 09 января 2012

Я хочу установить 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)

Ответы [ 2 ]

35 голосов
/ 09 января 2012

Как правило,

tv.setText(String.valueOf(int));

Если значение находится внутри другого класса?Вы можете сделать получатель для значения, которое вы хотите в этом классе:

public int getValue() {
    return value;
}

, чтобы вы могли получить к нему доступ из другого:

НО , если вы установитеTextView для int, он будет интерпретироваться как Android идентификатор ресурса .Если вы хотите, чтобы значением int был ваш текст (а не ресурс, на который он указывает), сначала сделайте его строкой.

tv.setText(String.valueOf(theOtherClassInstance.getValue()));

РЕДАКТИРОВАТЬ Если ваш int равен firstResultсогласно вашему комментарию ниже, получатель становится:

public int getFirstResult() {
    return firstResult;
}
22 голосов
/ 09 января 2012

Делая setText (int), вы ссылаетесь на ресурс приложения из файлов XML, а не на само значение.

Чтобы правильно задать целое число, выполните следующие действия:

tv.setText(""+integer);

илилучшее решение:

tv.setText(String.valueOf(integer));
...