андроид.содержание.res. Resources$NotFoundException: String resource 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;
}
}
когда это действие вызывается, я получаю это сообщение об ошибке:
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
Я не знаю, как исправить эту ошибку.
4 ответа:
изменить
dateTime.setText(app.getTotalDl());
до
dateTime.setText(String.valueOf(app.getTotalDl()));
есть разные версии
setText
- один принимает строку и один принимает идентификатор ресурса int. Если вы передадите ему целое число, он попытается найти соответствующий идентификатор строкового ресурса, который он не может найти, что является вашей ошибкой.Я думаю
app.getTotalDl()
возвращает int. Вам нужно конкретно сказатьsetText
чтобы установить его в строковое значение этого int.