web-dev-qa-db-fra.com

android.content.res.Resources $ NotFoundException: ID de ressource de chaîne # 0x0

Je développe une application Android qui lit les données de la base de données MySQL et j'ai fait face à cette erreur. J'ai cette mise en page 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> 

Et voici le mon fichier 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;
}
}

Lorsque cette activité est appelée, je reçois ce message d'erreur:

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

Je ne sais pas comment résoudre cette erreur.

123
user2881604

Changement

dateTime.setText(app.getTotalDl());

À

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

Il existe différentes versions de setText - l'une utilise une chaîne et l'autre, un identifiant de ressource int. Si vous lui transmettez un entier, il essaiera de rechercher l'ID de ressource chaîne correspondant - qu'il ne peut pas trouver, ce qui est votre erreur.

Je suppose que app.getTotalDl() renvoie un int. Vous devez spécifier spécifiquement setText pour lui attribuer la valeur String de cet int.

setText (int resid) vs setText (CharSequence text)

405
Ken Wolf

Remplacer

dateTime.setText(app.getTotalDl());

Avec

dateTime.setText(""+app.getTotalDl());
10
Soni Kumar

Lorsque vous essayez de définir du texte dans Edittext ou textview, vous devez passer uniquement au format String.

dateTime.setText(app.getTotalDl());

à

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

La valeur évaluée pour settext étant un entier, une ressource y a été attachée, mais elle n'a pas été trouvée. Vous vouliez définir du texte de sorte que chaîne soit convertie en entier en attachant .toStringe ou String.valueOf(int) résoudra votre problème!

0
blackHawk