2011-03-08 3 views
0

Je suis nouveau sur Android et Java mais j'ai de l'expérience en programmation.Strange comportement de la chaîne de caractères sous Android/Java

Quand je veux commencer ce qui suit dans Android, il se bloque:

package org.ds.test; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class Test extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Toast.makeText(this, 
       getResources().getStringArray(R.array.test_array).length, 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

Je ne sais pas pourquoi les accidents d'applications, mais le tableau est défini comme une chaîne tableau dans les valeurs/arrays.xml avec 6 objets. C'est aussi tout à fait correct dans le R.java, le tableau y est défini.

Quand je fais ce qui suit cela fonctionne:

package org.ds.test; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class Test extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     int arr_length = getResources().getStringArray(R.array.test_array).length; 

     Toast.makeText(this, 
       "array has a length of " + arr_length + " " + getResources().getStringArray(R.array.test_array).length, 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

Alors, pourquoi ça marche quand je d'abord appeler la longueur dans une variable puis appelle en outre la longueur comme je voulais? Le niveau Android est de 8/2.2 Cela n'a aucun sens pour moi, alors peut-être que l'un d'entre vous a la moindre idée.

Répondre

1

vous passez un numéro (int) pas une chaîne comme le texte, c'est une solution:

String.valueOf(getResources().getStringArray(R.array.test_array).length) 

Edit: Votre deuxième exemple fonctionne comme vous le numéro à caster une chaîne en annexant à la chaîne "tableau a une longueur de".

+0

C'est un vieux problème pour tous les développeurs Java. Tout le monde a eu ce problème une fois ou l'autre. –

+0

Ah, oui. Lorsque vous recherchez des problèmes qui semblent horriblement complexes, vous oubliez la possibilité la plus facile ... merci beaucoup. – Morv

+0

@DaysShadow N'oubliez pas de marquer la réponse comme acceptée. Mes excuses si ce n'était pas encore possible. – Klaus