文字列の抽出に問題があります
ファイル名を参照して、4 つの選択肢 (ボタンなど) で複数の選択肢を作成しています。ファイル (質問) は png で、ファイル名は Number-Q01AZ7BZ8CZ9DZ10ANZ8.png です。これらの png は、assets フォルダーの下に配置されます。
Set<String> regions = regionsMap.keySet(); // get Set of regions
// loop through each region
for (String region : regions)
{
if (regionsMap.get(region)) // if region is enabled
{
// get a list of all flag image files in this region
String[] paths = assets.list(region);
for (String path : paths)
fileNameList.add(path.replace(".png", ""));
} // end if
} // end for
String fileName = fileNameList.get(randomIndex);
if (!quizCountriesList.contains(fileName))
{
quizCountriesList.add(fileName); // add the file to the list
String nextImageName = quizCountriesList.remove(0);
correctAnswer = nextImageName; // update the correct answer
int AZ = correctAnswer.indexOf("AZ");
int BZ = correctAnswer.indexOf("BZ");
int CZ = correctAnswer.indexOf("CZ");
int DZ = correctAnswer.indexOf("DZ");
int ANZ = correctAnswer.indexOf("ANZ");
String choiceA = null;
String choiceB = null;
String choiceC = null;
String choiceD = null;
choiceA = correctAnswer.substring( (AZ+2), (BZ) );
choiceB = correctAnswer.substring( (BZ+2), (CZ) );
choiceC = correctAnswer.substring( (CZ+2), (DZ) );
choiceD = correctAnswer.substring( (DZ+2), (ANZ) );
logcat は次のとおりです。
11-09 21:14:08.495: E/AndroidRuntime(25905): FATAL EXCEPTION: main
11-09 21:14:08.495: E/AndroidRuntime(25905): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.trial.quizgame/com.trial.quizgame.QuizGame}: java.lang.StringIndexOutOfBoundsException: length=15; regionStart=1; regionLength=-2
11-09 21:14:08.495: E/AndroidRuntime(25905): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
ボタンを .setText(correctAnswer) として設定しようとしましたが、Number-Q01AZ7BZ8CZ9DZ10ANZ8 として正しく表示されるため、「correctAnswer」の文字列を取得する上部は問題ありません。文字列を抽出する際に問題が残りましたが、BZ は AZ の後ろの位置にある必要があるため、CZ は BZ の後ろなどのように:
logcat から、regionLength は -2? どうすればこれを処理できますか?Q01、A=7、B=8、C=9、D=10、ANZ=8 を選択してください
事前にアドバイスをありがとう!