2013-11-24 20 views
101

Tôi đang phát triển một ứng dụng Android đọc dữ liệu từ cơ sở dữ liệu MySQL và tôi gặp phải lỗi này. Tôi có bố trí XML này:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 


     <TextView android:id="@+id/wardNumber" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="3dp" 
      android:text="Ward Number" 
      android:textSize="22dp"/> 


     <TextView android:id="@+id/dateTime" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/wardNumber" 
      android:layout_alignParentRight="true" 
      android:layout_marginRight="3dp" 
      android:text="Date-Time" /> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@+id/dateTime" 
      android:layout_alignBottom="@+id/dateTime" 
      android:layout_alignLeft="@+id/wardNumber" 
      android:layout_marginLeft="3dp" 
      android:text="Name" /> 

</RelativeLayout> 

Và đây là file Java của tôi:

public ApplicationAdapter(Context context, List<Application> items) { 
    super(context, R.layout.app_custom_list, items); 
    this.items = items; 
} 

@Override 
public int getCount() { 
    return items.size(); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 

    if(v == null) { 
     LayoutInflater li = LayoutInflater.from(getContext()); 
     v = li.inflate(R.layout.app_custom_list, null);    
    } 

    Application app = items.get(position); 

    if(app != null) { 
     // ImageView icon = (ImageView)v.findViewById(R.id.appIcon); 
     TextView wardNumber = (TextView)v.findViewById(R.id.wardNumber); 
     TextView name = (TextView)v.findViewById(R.id.name); 
     // LinearLayout ratingCntr = (LinearLayout)v.findViewById(R.id.ratingCntr); 
     TextView dateTime = (TextView)v.findViewById(R.id.dateTime); 

    //  if(icon != null) { 
    //   Resources res = getContext().getResources(); 
    //   String sIcon = "com.sj.jsondemo:drawable/" + app.getIcon(); 
    //   icon.setImageDrawable(res.getDrawable(res.getIdentifier(sIcon, null, null))); 
    //  } 

     if(wardNumber != null) wardNumber.setText(app.getTitle()); 

     if(name != null) name.setText(app.getTitle()); 

     if(dateTime != null) { 
      dateTime.setText(app.getTotalDl()); 
      // NumberFormat nf = NumberFormat.getNumberInstance(); 
      // dateTime.setText(nf.format(app.getTotalDl())+" dl");    
     } 


    } 

    return v; 
} 
} 

Khi Hoạt động này được gọi là, tôi nhận được thông báo lỗi này:

11-24 21:12:03.633: E/AndroidRuntime(1251): FATAL EXCEPTION: main 
11-24 21:12:03.633: E/AndroidRuntime(1251): android.content.res.Resources$NotFoundException: String resource ID #0x0 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.content.res.Resources.getText(Resources.java:201) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.TextView.setText(TextView.java:2863) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at com.sj.jsondemo.Appl icationAdapter.getView(ApplicationAdapter.java:53) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.AbsListView.obtainView(AbsListView.java:1430) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.ListView.measureHeightOfChildren(ListView.java:1216) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.ListView.onMeasure(ListView.java:1127) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.View.measure(View.java:8313) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:701) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.LinearLayout.onMeasure(LinearLayout.java:311) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.View.measure(View.java:8313) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.View.measure(View.java:8313) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531) 
11-24 21:12:03.633: E/AndroidRuntime(1251):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.View.measure(View.java:8313) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.View.measure(View.java:8313) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.ViewRoot.performTraversals(ViewRoot.java:839) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.os.Looper.loop(Looper.java:130) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at android.app.ActivityThread.main(ActivityThread.java:3683) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at java.lang.reflect.Method.invokeNative(Native Method) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at java.lang.reflect.Method.invoke(Method.java:507) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
11-24 21:12:03.633: E/AndroidRuntime(1251): at dalvik.system.NativeStart.main(Native Method) 
11-24 21:12:08.922: I/Process(1251): Sending signal. PID: 1251 SIG: 9 

I don' t biết cách sửa lỗi này.

Trả lời

362

Thay đổi

dateTime.setText(app.getTotalDl()); 

Để

dateTime.setText(String.valueOf(app.getTotalDl())); 

Có phiên bản khác nhau của setText - một mất một String và một mất một id tài nguyên int. Nếu bạn vượt qua nó một số nguyên nó sẽ cố gắng tìm id tài nguyên chuỗi tương ứng - mà nó không thể tìm thấy, đó là lỗi của bạn.

Tôi đoán app.getTotalDl() trả về một int. Bạn cần phải thông báo cụ thể setText để đặt giá trị này thành giá trị Chuỗi của int này.

setText (int resid) vs setText (CharSequence text)

+2

setText (int resId) thậm chí không có javadoc được đính kèm với nó. Họ thực sự nên cho rằng một cái tên riêng biệt - rõ ràng là một sự lạm dụng phổ biến ở đây. Vì vậy, chỉ định resId đặt văn bản của TextView là văn bản của tài nguyên khác? –

8

Thay

dateTime.setText(app.getTotalDl()); 

Với

dateTime.setText(""+app.getTotalDl()); 
+0

Đó là công việc, Nhưng tôi nghĩ Đó không phải là cách phù hợp. @KenWolf trả lời là cách chính xác và chuyên nghiệp. – amin

0

Khi bạn cố gắng đặt văn bản trong textview bạn phải vượt qua chỉ dạng chuỗi Edittext hay.

dateTime.setText(app.getTotalDl()); 

để

dateTime.setText(String.valueOf(app.getTotalDl())); 
0

Giá trị đánh giá cho setText là số nguyên nên đi xem một nguồn tài nguyên gắn liền với nó nhưng nó đã không tìm thấy, bạn muốn thiết lập văn bản để nó phải được chuỗi để chuyển đổi số nguyên thành chuỗi bằng cách đính kèm .toStringe hoặc String.valueOf(int) sẽ giải quyết vấn đề của bạn!

Các vấn đề liên quan