2012-01-08 8 views
13

Quiero establecer un TextView como el valor de un número entero, es de esperar de este modo:Definir texto de valor entero

tv.setText(int) 

yo probamos este un recibo este error.

Además, mi valor entero es en otra clase

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) 

Respuesta

27

En general,

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

Si el valor se encuentra dentro de otra clase? Usted puede hacer un captador para el valor que desee en esa clase:

public int getValue() { 
    return value; 
} 

Así que se puede acceder a él desde el otro:

PERO si establece un TextView a un int, lo hará ser interpretado como un recurso de Android. Si desea que el valor de int sea su texto (y no el recurso al que apunta), primero conviértalo en un String.

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

EDITAR Si su int se firstResult como por su comentario abajo, entonces el comprador se convierte en:

public int getFirstResult() { 
    return firstResult; 
} 
+0

por lo que en este caso, el entero es "FIRSTRESULT", me conviene "public int getValue () {"a public int getValue (firstResult) {:? – MiKenning

+0

No, no necesita pasar ninguna información a getValue() - devuelve un entero y un entero solamente. Entonces solo necesitas getValue() :) – Eilidh

+0

¿cómo sabe el valor de mi entero? – MiKenning

21

Haciendo setText (int) usted se refiere a un recurso de aplicación a partir de los archivos XML, no el valor en sí mismo

Para establecer el número entero propertly hacer lo siguiente:

tv.setText(""+integer); 

o mejor solución:

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