2013-11-24 16 views
101

Sto sviluppando un'app per Android che legge i dati dal database MySQL e ho riscontrato questo errore. Ho questo layout 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> 

E questo è il file mia 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; 
} 
} 

Quando questa attività viene chiamato, ricevo questo messaggio di errore:

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' so come risolvere questo errore.

risposta

362

Change

dateTime.setText(app.getTotalDl()); 

Per

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

Ci sono diverse versioni di setText - si prende una stringa e si prende un id int risorsa. Se lo passi, un intero tenterà di cercare l'id risorsa stringa corrispondente, che non può trovare, che è il tuo errore.

Immagino che app.getTotalDl() restituisca un int. È necessario specificare specificamente a setText di impostarlo sul valore String di questo int.

setText (int resid) vs setText (CharSequence text)

+2

setText (int resId) non ha nemmeno javadoc collegato ad esso. Dovrebbero davvero aver dato a quell'altro un nome separato, ovviamente un cattivo uso comune qui. Quindi, specificare il resId imposta un testo di TextView come testo di un'altra risorsa? –

8

Sostituire

dateTime.setText(app.getTotalDl()); 

Con

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

È lavoro, ma penso che non sia il modo adatto. @KenWolf risposta è il modo corretto e professionale. – amin

0

Quando si tenta di impostare il testo in Edittext o textview si dovrebbe passare solo in formato stringa.

dateTime.setText(app.getTotalDl()); 

a

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

Il valore valutato per setText era intero così è andata a vedere una risorsa collegato ad esso, ma non è stato trovato, si voleva impostare il testo in modo che dovrebbe essere stringa in modo convertire intero in stringa allegando .toStringe o String.valueOf(int) risolverà il tuo problema!

Problemi correlati