android.content.res.Resources $ NotFoundException:string资源ID#0x0

我正在开发一个Android应用程序,从MySQL数据库中读取数据,我面临这个错误。 我有这个XML布局:

<?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> 

这是我的Java文件:

 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; } } 

当这个Activity被调用时,我收到这个错误信息:

 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 

我不知道如何解决这个错误。

更改

 dateTime.setText(app.getTotalDl()); 

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

有不同版本的setText – 一个接受一个string,一个接受一个int资源ID。 如果你传递一个整数,它会尝试寻找相应的string资源ID – 它找不到,这是你的错误。

我想app.getTotalDl()返回一个int。 你需要明确地告诉setText把它设置为这个int的String值。

setText(int resid) vs setText(CharSequence文本)

更换

 dateTime.setText(app.getTotalDl()); 

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

当您尝试在Edittexttextview设置文本时,您应该只传递String格式。

 dateTime.setText(app.getTotalDl()); 

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