2012-01-08 32 views
13

我想成立一​​個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) 

回答

27

一般來說,

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

如果該值是另一個類中?您可以爲值在那個類要一個getter:

public int getValue() { 
    return value; 
} 

這樣就可以從另一個訪問:

如果你設置一個TextView爲int,它會被解釋爲Android 資源ID。如果你想將int的值作爲你的文本(而不是它所指向的資源),首先將它設置爲一個String。

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

編輯如果你的int值firstResult按下面的評論,然後吸氣變爲:

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

所以在這種情況下,整數 「FIRSTRESULT」,我會成立「公衆詮釋的getValue( ){「to public int getValue(firstResult){:? – MiKenning 2012-01-08 21:48:40

+0

不,您不需要將任何信息傳遞給getValue() - 它僅返回一個整數和一個整數。所以你只需要getValue():) – Eilidh 2012-01-08 21:50:48

+0

它是如何知道我的整數的值呢? – MiKenning 2012-01-08 21:53:45

21

做的setText(INT)你是從XML文件指的應用程序資源,而不是價值本身。

要設置整數propertly做到以下幾點:

tv.setText(""+integer); 

或更好的解決方案:

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