Как использовать одну запись массива строк в зависимости от ее положения в массиве (Android)? - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь создать простое приложение оракула, в котором, когда вы задаете приложению вопрос, оно выдает ответ, основанный на случайном числе.

Я провел некоторые исследования, и мне кажется, что лучший способ сделать это - создать ресурс для моих ответов, содержащий строковый массив, и затем я могу ввести в него различные ответы.

В моем коде Java в моей основной деятельности я могу генерировать случайное число одним нажатием кнопки. Это случайное число может затем соответствовать номеру индекса.

Моя проблема возникает, когда я пытаюсь собрать случайное число и средство для доступа к массиву строк вместе в коде.

Вот копия моего файла 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>

Вот мой код 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;
    }

}
}

Я программирую на Java с помощью Eclipse IDE, и, как вы уже догадались, я новичок в игре!

Вся помощь очень ценится!

1 Ответ

7 голосов
/ 14 апреля 2011

Приведенный ниже код поместит ваш массив ресурсов String в строку [], называемую ответы.

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

Затем вы можете выбрать свой ответ с помощью

String answer = answers[YOUR_RANDOM_WHOLE_NUMBER];

К сведению, строковые массивы в ресурсах могут иметь длину не более 512 записей. Справка по некоторым строковым ресурсам Некоторая общая справка по классам ресурсов

...