2012-01-08 30 views
13

Tôi muốn thiết lập một TextView như giá trị của một số nguyên, hy vọng như vậy:Set Text to Integer Value

tv.setText(int) 

tôi đã cố gắng một này tôi nhận được lỗi này.

Ngoài ra, giá trị số nguyên của tôi là trong một lớp

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) 

Trả lời

27

Nói chung,

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

Nếu giá trị là bên trong một lớp khác? Bạn có thể làm cho một getter cho giá trị mà bạn muốn trong lớp đó:

public int getValue() { 
    return value; 
} 

Vì vậy mà bạn có thể truy cập nó từ một trong những khác:

NHƯNG nếu bạn thiết lập một TextView đến một int, nó sẽ được hiểu là id tài nguyên Android . Nếu bạn muốn giá trị của int là văn bản của bạn (và không phải là tài nguyên nó trỏ đến), hãy đặt nó thành một String trước tiên.

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

EDIT Nếu int của bạn được firstResult theo nhận xét của bạn bên dưới, sau đó các getter trở thành:

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

như vậy trong trường hợp này, nguyên là "FIRSTRESULT", tôi sẽ thiết lập "public int getValue () {"đến getValue int công khai (firstResult) {:? – MiKenning

+0

Không, bạn không cần truyền bất kỳ thông tin nào vào getValue() - nó trả về một số nguyên và một số nguyên duy nhất. Vì vậy, bạn chỉ cần getValue() :) – Eilidh

+0

làm thế nào để nó biết giá trị của số nguyên của tôi sau đó? – MiKenning

21

Làm setText (int) mà bạn đang đề cập đến một nguồn tài nguyên ứng dụng từ các tập tin XML, không phải bản thân giá trị.

Để thiết lập các nguyên propertly làm như sau:

tv.setText(""+integer); 

hoặc giải pháp tốt hơn:

tv.setText(String.valueOf(integer)); 
Các vấn đề liên quan