2011-04-14 2 views
0

J'essaie de produire une application Oracle simple où lorsque vous posez une question à l'application, elle crache une réponse basée sur un nombre aléatoire. J'ai fait quelques recherches et il me semble que la meilleure façon de faire est de créer une ressource pour mes réponses contenant un tableau de cordes, je peux ensuite taper mes différentes réponses dans le tableau.Comment utiliser une entrée de tableau de chaînes basée sur sa position dans le tableau (Android)?

Dans mon code Java dans mon activité principale, je peux générer un nombre aléatoire en cliquant sur un bouton. Ce nombre aléatoire peut alors correspondre au numéro de l'index.

Mon problème vient quand j'essaie d'assembler le nombre aléatoire et l'installation pour accéder au tableau de chaînes ensemble dans le code.

Voici une copie de mon fichier answerStrings.xml

<?xml version="1.0" encoding="utf-8"?> 

<resources> 
    <string-array 
    name="answers"> 
    <item>Yes</item> 
    <item>No</item> 
    <item>Maybe</item> 
    <item>Quite possibly</item> 
</string-array> 
</resources> 

Voici mon code java:

import java.util.Random; 

import android.app.Activity; 
import android.content.res.Resources; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.os.Vibrator; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener { 

TextView outputText; 
MediaPlayer mpGobble; 
Vibrator vibr; 
String[] answers; 
private Random myRandom = new Random(); 
int   randomNumber; 

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

    //find the output text view for use within the activity 

    outputText = (TextView)findViewById(R.id.textView01); 

    outputText.setOnClickListener(this); 

    //Declare an array of outputs 
    Resources res = getResources(); 
    String[] answers = res.getStringArray(R.array.answers); 
    //--------^ Problem 

    outputText.setText("Ask your question then click me"); 
} 


@Override 
public void onClick(View src) { 
    switch(src.getId()){ 
    case R.id.textView01: 

     //creates a random number 
     int randomNumber = myRandom.nextInt(3); 

     String answer = answers[randomNumber]; 

     outputText.setText(answer); 




      break; 
    } 

} 
} 

Je suis la programmation en Java avec l'IDE Eclipse et comme vous l'avez probablement deviné Je suis nouveau au jeu!

Toute l'aide est très appréciée !!

Répondre

7

Le code ci-dessous placera votre tableau de ressources String dans un String [] appelé réponses.

Resources res = getResources(); 
String[] answers = res.getStringArray(R.array.answers); 

Vous pouvez ensuite sélectionner votre réponse avec

String answer = answers[YOUR_RANDOM_WHOLE_NUMBER]; 

Un FYI, tableaux de chaînes dans les ressources ne peuvent être que 512 entrées longues. Some string resource helpSome general resource class help

+0

Wow c'était une réponse rapide! maintenant sur le point de l'essayer et enverra quelques commentaires. – Ben

+0

Je reçois un avertissement variable locale n'est jamais lu sur les réponses du premier morceau de code et aussi sur la réponse dans le deuxième morceau de code. – Ben

+0

Si le deuxième morceau compile, alors il est certainement en train de lire les réponses, et les réponses ne seraient pas inutilisées. Pour rendre la réponse utilisée, vous voudrez probablement l'afficher en quelque sorte, peut-être en cochant setText sur un TextView? –

Questions connexes